Ausgabe von Array

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

  • Ausgabe von Array

    Hallo

    Möchte eine csv-Datei in eine MySQL importieren. Da ich aber den Daten im csv-File noch andere Werte hinzufügen möchte, kann ich es nicht einfach mit LOAD DATA INFILE importieren. Habe nun mithilfe einiger Ausschnitte im Forum und der PHP-Doku folgendes Script erstellt...

    Code:
    $dateipfad = "F:/www/htdocs/price/import.csv";
    $datei = fopen($dateipfad, "r")
    	or die ("Konnte Datei nicht lesen");
    
    $i = 0;
    
    if($datei) {
       while (!feof($datei)) {
           $zeilen_csv = fgets($datei, 4096);
           $zeilen_db[$i] = explode(";", $zeilen_csv);
           	for($x=0;$x<count($zeilen_db);$x++) {
           		echo $zeilen_db[$x];
           		}
           $i++;
       }
       fclose($datei);
    }
    Bei der Ausgabe erscheinen nun nicht die Werte die im File abgespeichert sind, sondern nur immer "Array". Kann mir jemand sagen, an was das liegt?

    Danke!

  • #2
    Kann mir jemand sagen, an was das liegt?
    durch das explode machst du aus dem eindimensionalen array ein zweidimensionales ...

    PHP-Code:
    echo $zeilen_db[$i][$x]; 
    schau auch mal print_r
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      ohne mich in den code reinzulesen (was ohne die php-tags schon recht schwer ist) - wenn echo ein "Array" als ausgabe hat, dann versuchs mit print_r statt echo.

      Kommentar


      • #4
        Danke. Habs nun geändert in...

        PHP-Code:
        if($datei) {
           while (!
        feof($datei)) {
               
        $zeilen_csv fgets($datei4096);
               
        $zeilen_db[$i] = explode(";"$zeilen_csv);
               
        print_r($zeilen_db[$i]["0"]);
               
        print_r($zeilen_db[$i]["1"]);    
               
        $i++;
           }
           
        fclose($datei);

        Nun zeigt er die Daten eigentlich auch an. Gibt aber auch noch die Fehlermeldung "Notice: Undefined index: 1 in F:\htdocs\test.php on line 27" aus. Der Index im Array $zeilen_db ist aber doch definiert, sonst könnte er ja zuvor nicht ausgegeben werden.

        Kommentar


        • #5
          wozu die anführungsstriche um die zahlen drumrum?
          ist $zeilen_db[$i][0] denn ein array?
          was ist $i vor dem ersten durchlauf der schleife?

          zeig mal print_r($zeilen_db);

          Kommentar


          • #6
            Das i$ soll als Zähler für den Array dienen, damit ich diesen in der Schleife auch noch anzeigen kann. War aber bei $zeilen_db[$i] falsch gesetzt. Habe diesen nun entfernt und erhalte folgendes resultat für print_r($zeilen_db)...

            Array ( [0] => 1 [1] => Zeile1-Feld1 [2] => Zeile1-Feld2 ) Array ( [0] => 2 [1] => Zeile2-Feld1 [2] => Zeile2-Feld2 ) Array ( [0] => 3 [1] => Zeile3-Feld1 [2] => Zeile3-Feld2 ) Array ( [0] => 4 [1] => Zeile4-Feld1 [2] => Zeile4-Feld2 ) Array ( [0] => 5 [1] => Zeile5-Feld1 [2] => Zeile5-Feld2 ) Array ( [0] => 6 [1] => Zeile6-Feld1 [2] => Zeile6-Feld2 ) Array ( [0] => )

            Sieht ja schon mal besser aus.

            Mit dem folgenden Code...
            PHP-Code:
            $i="0";

            if(
            $datei) {
               while (!
            feof($datei)) {
                   
            $zeilen_csv fgets($datei4096);
                   
            $zeilen_db explode(";"$zeilen_csv);
                   
            print_r($zeilen_db);
                   
            //print_r($zeilen_db[$i][0]);
                   //print_r($zeilen_db[$i][1]);
                   //print_r($zeilen_db[$i][2]);
                   
            $i++;    
               }
               
            fclose($datei);

            ... erhalte ich aber wieder Fehler:
            Notice: Undefined offset: 3 in F:\htdocs\test.php on line 27

            Notice: Undefined offset: 3 in F:\htdocs\test.php on line 28

            Notice: Undefined offset: 3 in F:\htdocs\test.php on line 29
            Array ( [0] => 5 [1] => Zeile5-Feld1 [2] => Zeile5-Feld2 )
            Notice: Undefined offset: 4 in F:\htdocs\test.php on line 27

            Notice: Undefined offset: 4 in F:\htdocs\test.php on line 28

            Notice: Undefined offset: 4 in F:\htdocs\test.php on line 29
            Array ( [0] => 6 [1] => Zeile6-Feld1 [2] => Zeile6-Feld2 )
            Notice: Undefined offset: 5 in F:\htdocs\test.php on line 27

            Notice: Undefined offset: 5 in F:\htdocs\test.php on line 28

            Kommentar


            • #7
              Habe nun noch folgendes ausprobiert...
              PHP-Code:
              if($datei) {
                 while (!
              feof($datei)) {
                     
              $zeilen_csv fgets($datei4096);
                     
              $zeilen_db explode(";"$zeilen_csv);
                            
                     
              print_r($zeilen_db);
                     echo 
              "<br>";
                 }
                 
              fclose($datei);
                 
              print_r($zeilen_db[0][1]);

              Als Ausgabe für
              PHP-Code:
              print_r($zeilen_db); 
              bekomme ich...

              Array ( [0] => 1 [1] => Zeile1-Feld1 [2] => Zeile1-Feld2 )
              Array ( [0] => 2 [1] => Zeile2-Feld1 [2] => Zeile2-Feld2 )
              Array ( [0] => 3 [1] => Zeile3-Feld1 [2] => Zeile3-Feld2 )
              Array ( [0] => 4 [1] => Zeile4-Feld1 [2] => Zeile4-Feld2 )
              Array ( [0] => 5 [1] => Zeile5-Feld1 [2] => Zeile5-Feld2 )
              Array ( [0] => 6 [1] => Zeile6-Feld1 [2] => Zeile6-Feld2 )


              Nun müsste ich doch eigentlich mit
              PHP-Code:
              print_r($zeilen_db[0][1]); 
              den Wert Zeile6-Feld1 bekommen. Leider erhalte ich aber "Notice: Uninitialized string offset: 1 in F:\htdocs\test.php on line 36". Oben ist aber doch beschrieben, dass dieser Array existiert und auch einen Wert enthaltet.

              Kommentar


              • #8
                nein. weil print_r arrays ausgibt, und hier liegen offensichtlich keine vor.
                und dein array scheint eindimensional zu sein.

                Kommentar


                • #9
                  Und 'nen String-Offset [1] gibt's natürlich nicht, weil die alle Strings auf dem 0er index einstellig sind ...
                  carpe noctem

                  [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                  [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                  Kommentar


                  • #10
                    Nun hab ich's geschafft...

                    PHP-Code:
                    if($datei) {
                       while (!
                    feof($datei)) {
                           
                    $zeilen_csv fgets($datei4096);
                           
                    $zeilen_db explode(";"$zeilen_csv);
                        
                           
                    print_r($zeilen_db[0]);
                           
                    print_r($zeilen_db[1]);
                           
                    print_r($zeilen_db[2]);
                           echo 
                    "<br>";
                       }
                       
                    fclose($datei);

                    War ein bisschen verwirrt, da weiter oben der Tipp gegeben wurde, dass ich einen zweidimensionalen Array habe. Scheint aber doch nicht so zu sein. Mit dem jetztigen Code kann ich dann auch noch die zusätzlichen Werte eintragen und das ganze an die DB übergeben.

                    Danke für die Hilfe zu später Stunde!

                    Kommentar


                    • #11
                      Im ursprünglichen Code stand allerdings auch die Code-Zeile:
                      PHP-Code:
                      $zeilen_db[$i] = explode(";"$zeilen_csv); 
                      welche durchaus ein zweidimensionales Array erzeugt ... !
                      carpe noctem

                      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                      Kommentar


                      • #12
                        War leider ein Fehler meinerseits...

                        Kommentar

                        Lädt...
                        X