Riesen-Problem mit CSV Dateien

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

  • Riesen-Problem mit CSV Dateien

    Hallo,

    voller Verzweiflung hoffe ich bei Euch Hilfe zu finden:

    Problem: Wir haben heute Nacht unser Intranet auf neuen Servern installiert. Dazu kam noch ein Systemwechsel von WIN XP auf SLES 9.
    Seither funktioniert ne ganze Menge nicht, dieses problem aber ist mir
    völlig rätselhaft:

    Mit dem folgenden Script lese ich eine CSV Datei aus:

    $datei=fopen($dateiname,"r");
    $daten=fread($datei,filesize($dateiname));
    fclose($datei);
    $datensaetze=explode("\n",$daten);
    for($e=0;$e<sizeof($datensaetze);$e++)
    {
    $datenfeld[$e]=explode(";",$datensaetze[$e]); // auslesen mit simikolon
    }
    for($e=1;$e<sizeof($datensaetze);$e++)
    {
    echo $datenfeld[$e][8]."---".$datenfeld[$e][2]."<br>";
    }

    etc.

    Interessanterweise kann ich mir die Datenfelder[$e][1-7] anschauen, ab 8 wird nichts mehr angezeigt - und das obwohl in der CSV-Datei in den
    Feldern schon Inhalte sind.... Getrennt sind die Felder durch ein Semikolon ....

    Hat jemand eine Idee oder braucht Ihr noch mehr Infos ???

    Vielen Dank im Voraus

  • #2
    Was liefert denn die Ausgabe von $datenfeld mit print_r?

    Warum nimmst du nicht fgetcsv
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      bei print_r sind alle Felder ab 8 leer .....
      den Befehl kenn ich gar nicht .... schau ich mir mal eben an ...

      Kommentar


      • #4
        Und wie sieht die entsprechende Zeile der CSV-Datei aus?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          habe das ganze jetzt mit dem getcsv befehl gemacht.

          print_r:
          Array ( [0] => LH [1] => VIE [2] => ZB2NP9 [3] => VIELH0218 [4] => 2931SI [5] => 2006 [6] => 4 [7] => 1 [8] => [9] => [10] => [11] => [12] => [13] => CPT [14] => 2 [15] => [16] => [17] => HKSXB [18] => [19] => [20] => [21] => [22] => [23] => BAS [24] => )

          Zeile in CSV:

          LH;VIE;ZB2NP9;VIELH0218;2931SI;2006;4;1;VIELH0218;1489JK;2006;4;4;CPT;2;EUR;2.278,90;HKSXB;ETX;CC;CA ;;;BAS;BAS

          bin echt ratlos :-(

          Kommentar


          • #6
            Original geschrieben von fraeyodm
            habe das ganze jetzt mit dem getcsv befehl gemacht.

            print_r:
            Array ( [0] => LH [1] => VIE [2] => ZB2NP9 [3] => VIELH0218 [4] => 2931SI [5] => 2006 [6] => 4 [7] => 1 [8] => [9] => [10] => [11] => [12] => [13] => CPT [14] => 2 [15] => [16] => [17] => HKSXB [18] => [19] => [20] => [21] => [22] => [23] => BAS [24] => )

            Zeile in CSV:

            LH;VIE;ZB2NP9;VIELH0218;2931SI;2006;4;1;VIELH0218;1489JK;2006;4;4;CPT;2;EUR;2.278,90;HKSXB;ETX;CC;CA ;;;BAS;BAS

            bin echt ratlos :-(
            ich ehrlich gesagt auch.
            ich benutze php5 und habe es so ausprobiert:
            $ding="LH;VIE;ZB2NP9;VIELH0218;2931SI;2006;4;1;VIELH0218;1489JK;2006;4;4;CPT;2;EUR;2.278,90;HKSXB;ET X;CC;CA;;;BAS;BAS";
            print_r(explode(";",$ding));
            alle ellementen sind da.
            poltergeist?!!
            Slava
            bituniverse.com

            Kommentar


            • #7
              schön wäre es ... das betrifft ne ganze menge zeilen ;.-(

              Kommentar


              • #8
                mach bitte deine datei als anhang.
                ich versuche es mit php5 zu testen
                Slava
                bituniverse.com

                Kommentar


                • #9
                  mit was hast du die csv datei erstellt? vielleicht hängt das ganze irgendwie mit dem verwendentem zeichensatz zusammen oder mit den zeilenumbrüchen.

                  Kommentar


                  • #10
                    das ganze kommt von einer java application, auf die ich keinen weiteren einfluß habe ....

                    Kommentar


                    • #11
                      lade dir JAD java decompiler, dann hast du einflüss auf die Java-anwendung
                      aber ich glaube, dass die Probleme wo anderes liegen.
                      gib mir ein Stuck von deiner Datei, und zeig mir die stellen wo die Problemen auftreten.
                      Slava
                      bituniverse.com

                      Kommentar


                      • #12
                        datei ist im anhang
                        Angehängte Dateien

                        Kommentar


                        • #13
                          In deiner Datei finde ich zwei Zeilen, die mit "LH;VIE;ZB2NP9;..." beginnen:

                          LH;VIE;ZB2NP9;VIELH0218;2931SI;2006;4;1;;;;;;CPT;2;;;HKSXB;;;;;;BAS;
                          und
                          LH;VIE;ZB2NP9;VIELH0218;2931SI;2006;4;1;VIELH0218;1489JK;2006;4;4;CPT;2;EUR;2.278,90;HKSXB;ETX;CC;CA ;;;BAS;BAS

                          print_r:
                          Array ( [0] => LH [1] => VIE [2] => ZB2NP9 [3] => VIELH0218 [4] => 2931SI [5] => 2006 [6] => 4 [7] => 1 [8] => [9] => [10] => [11] => [12] => [13] => CPT [14] => 2 [15] => [16] => [17] => HKSXB [18] => [19] => [20] => [21] => [22] => [23] => BAS [24] => )[/B]
                          Passt doch wunderbar zu der ersten Zeile.

                          Zeile in CSV:

                          LH;VIE;ZB2NP9;VIELH0218;2931SI;2006;4;1;VIELH0218;1489JK;2006;4;4;CPT;2;EUR;2.278,90;HKSXB;ETX;CC;CA ;;;BAS;BAS
                          Nee, diese Zeile ist es wohl vermutlich nicht, die zu obiger Ausgabe führt ...
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            also
                            PHP-Code:
                            $datei=fopen($dateiname,"r");
                            $daten=fread($datei,filesize($dateiname));
                            fclose($datei);
                            $datensaetze=explode("\n",$daten);
                            for(
                            $e=0;$e<sizeof($datensaetze);$e++)
                            {
                            $datensaetze[$e]=explode(";",$datensaetze[$e]);
                            //print_r($datenfeld[$e]); // auslesen mit simikolon
                            }
                            for(
                            $e=1;$e<sizeof($datensaetze);$e++)
                            {
                              if(isset(
                            $datensaetze[$e][8]) && isset($datensaetze[$e][2]))
                            echo 
                            $datensaetze[$e][8]."---".$datensaetze[$e][2]."<br />";
                            else echo 
                            "in zeile $e ist fehler aufgetaucht<br />";

                            es funktioniert alles!!!
                            es sind aber mehrere Beiträge, die in $datensaetze[$e][8] nichts haben,
                            eigentlich genau so wie in datei.
                            Kann sein das mit "8" hast du in wirklichkeit 7 gemeint?
                            denn die Arrays beginnen mit 0
                            Slava
                            bituniverse.com

                            Kommentar


                            • #15
                              evtl. wird das zeilenende von fgetcsv() nicht korrekt erkannt.
                              PHP-Code:
                              ini_set('auto_detect_line_endings',1); 
                              http://de2.php.net/manual/en/ref.fil...t-line-endings

                              so ein problem hatte ich auch mal, als irgendjemand mir eine am mac generierte csv-datei gegeben hat, die hatte nämlich nur ein \r statt \n oder \r\n als zeilenende, was natürlich dann zu fehlern führt.

                              Kommentar

                              Lädt...
                              X