Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Array auslesen und in CSV schreiben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Array auslesen und in CSV schreiben

    Hallo Forum,

    ich möchte ein Array auslesen (checkboxen) und vorhandene Ergebnisse möglichst in folgender Art in einer CSV ausgeben:
    ergebnis1; 123
    ergebnis2; 123
    ergebnis3; 123
    usw.

    Meine bescheidenen Versuche ermöglichen nur:

    ergebnis1,ergebnis2,ergebnis3; 123

    was natürlich am implode liegt.
    Wie verarbeite ich das, damit in der CSV jede einzelne Stelle des Arrays eine neue Zeile bekommt?

    PHP-Code:
    if ( isset($_POST['art']) )

          foreach (
    $_POST['art'] as $l
            
    $art_text[] = $l
            
            
    $art_text implode("," ,$art_text);
       }
    fputs($csv$art_text ";" $artikelnr  "\n"); 
    Danke im Voraus für Eure Hilfe.

    Grüße

    Olli

  • #2
    PHP-Code:
    implodePHP_EOL$array ); 
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      @Arne: DANKE! (mal wieder)
      Ich habe jetzt:

      ergebnis1
      ergebnis2
      ergebnis3; 123

      d.h. Das Array wird nacheinander abgearbeitet, $artikelnr wird aber nur in der letzten Zeile ausgeworfen. Hast Du ne Idee, oder besser ne Lösung?

      Grüße

      Kommentar


      • #4
        Bau dir CSV nicht manuell zusammen, wenn es fputcsv gibt, was die Umsetzung erleichtert.

        PHP-Code:
        $file fopen('example.csv''a');
        foreach(
        $_POST['art_text'] as $art_text) {
            
        $item = array($art_text$_POST['artikelnr']);
            
        fputcsv($file$item';');
        }
        fclose($file); 

        Kommentar


        • #5
          Du kannst es auch wie Blar machen, aber ich bin kein Freund von permanenten Dateizugriffen innerhalb von Schleifen.
          Wandel Dein Code ein bischen ab, dann sollte rauskommen, was Du möchtest:
          PHP-Code:
          if ( isset($_POST['art']) ) {  

              foreach ( 
          $_POST['art'] as $l ) {
                  
                  
          $art_text[] = $l ';' $artikelnr;

              } 

              
          fputs$csvimplode(PHP_EOL$art_text) );


          Competence-Center -> Enjoy the Informatrix
          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

          Kommentar


          • #6
            Wenn wirklich die Dateizugriffe ein Problem darstellen sollten, dann kann man natürlich erst in den Speicher schreiben und danach den Inhalt in die Datei kopieren.

            PHP-Code:
            $memory fopen('php://memory''a');
            foreach(
            $_POST['art_text'] as $art_text) { 
                
            $item = array($art_text$_POST['artikelnr']); 
                
            fputcsv($memory$item';');
            }
            fseek($memory0);

            $file fopen('example.csv''a');
            stream_copy_to_stream($memory$file);
            fclose($file); 

            Kommentar


            • #7
              Beide funktionieren.

              Ich versuch mal, das jetzt zu verstehen. Euch beiden jedenfalls vielen Dank und ein schönes rest WE. Ihr habt mir den Ar*** gerettet. Alle Daumen hoch.

              Aus Berlin

              Olli

              Kommentar


              • #8
                @Blar: Generell ne nette Lösung, aber ernsthaft nur um zwingend fgetcsv nutzen zu können?!
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #9
                  Zitat von Arne Drews Beitrag anzeigen
                  nur um zwingend fgetcsv nutzen zu können?!
                  Ja, da es leider kein str_putcsv gibt. Ich sehe den Vorteil von fputcsv darin, dass Leerzeichen, Trennzeichen und Anführungszeichen korrekt von der Funktion verarbeitet werden.

                  Sollte in deinen Beispielen einmal ein Trennzeichen (; in diesem Fall) oder ein Leerzeichen im Text landen, könnte das CSV kaputtgehen.

                  Kommentar


                  • #10
                    Zitat von alxy Beitrag anzeigen
                    ... Ich würde aber direkt zu ner ordentlich Lib greifen: https://github.com/goodby/csv

                    Die funktioniert gut und ist über composer ladbar.
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      "wir" haben eben eine Reihe Checkboxen ausgelesen und in die Datei geschrieben. Ich muss hintereinander fünf dieser Reihen auslesen und dann untereinander in die CSV geschrieben. Spricht etwas dagegen, Eure Vorschläge mehr oder weniger 5 mal untereinander zu schreiben, ausser dass es blöd aussieht und nur Anfänger machen?

                      Kommentar


                      • #12
                        Welche Variante Du auch verwendest, das wird sich doch sicher über eine Schleife abbilden lassen, anstatt den Code zu wiederholen...
                        Competence-Center -> Enjoy the Informatrix
                        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                        Kommentar


                        • #13
                          mehr oder weniger 5 mal untereinander zu schreiben ... Spricht etwas dagegen
                          Ja, dafür gibt es sogar ein Paradigma: DRY
                          Of all the principles of programming, Don't Repeat Yourself (DRY) is perhaps one of the most fundamental.
                          http://programmer.97things.oreilly.c...epeat_Yourself
                          The string "()()" is not palindrom but the String "())(" is.

                          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                          PHP.de Wissenssammlung | Kein Support per PN

                          Kommentar


                          • #14
                            HAHA. alles klar. ich schau mal, was ich reissen kann.

                            Kommentar

                            Lädt...
                            X