Fehlermeldung bei txt Datei auslesen

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

  • Fehlermeldung bei txt Datei auslesen

    Hallo Zusammen,
    ich habe eine TXT Datei.So sieht sie inhaltlich aus:

    0 1 2 2 5

    Ausgelesen wird sie so:

    [FONT=courier new][COLOR=blue]

    <?php

    /**
    * @Abruf Status
    */

    function readata($data){

    $status=$data;

    $fp = fopen($status, "r");

    while (!feof($fp)){

    $text = fgets($fp,255);
    $array = explode(" ",$text);

    $ez= $array[0];
    $dz= $array[1];
    $app= $array[2];
    $fw= $array[3];
    [COLOR=Red]$ho= $array[4];[/COLOR]

    echo $ho;
    }
    fclose($fp);

    }
    ?>

    [/FONT][/COLOR]

    Bis $fw=$array[3] funktioniert alles gut.
    Bei $ho=$array[4] kommt ein Fehlermeldung: UNDEFINED OFFSET
    Wenn ich $ho=$array[3] eingebe dann funktioniert wieder.
    Aus irgendeinem Grund wird $array[4] (würde den Zahl 5 aus der TXT Datei bedeuten) nicht ausgelesen.

    Woran liegt das? Was kann ich machen, damit Alles ausgelesen wird?

    Für Euere Hilfe Danke jetzt schon.
    Danke und Grüße

  • #2
    Hallo Canonn,

    ich hab deinen Code mal ausprobiert, bei mir gibts keine Fehlermeldung und auch keine Ausgabe

    Ich hab den Code mal ein wenig verändert.
    PHP-Code:
    function read_data($data){
    $fp fopen($data"r");
        while (!
    feof($fp)) {
        
    $text fgets($fp,255);
        
    $array explode(" ",$text);
        return 
    $array;
        }
    fclose($fp);
    }

    print_r(read_data('test.txt'));
    //Ausgabe ein Array
    //Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 2 [4] => 5 ) 

    Kommentar


    • #3
      Ähm, ...

      PHP-Code:
      function getZimmerZahl($filename)
      {
        return 
      explode(" ",file_get_contents($filename))
      }

      list(
      $ez,$dz,$app,$fw,$ho) = getZimmerZahl('file.txt'); 
      geht natürlich auch direkt einzeilig, falls man auf die Funktion verzichten kann:

      PHP-Code:
      list($ez,$dz,$app,$fw,$ho) = explode(" ",file_get_contents('file.txt')) 

      Kommentar


      • #4
        Original geschrieben von gourmet
        Hallo Canonn,

        ich hab deinen Code mal ausprobiert, bei mir gibts keine Fehlermeldung und auch keine Ausgabe

        Ich hab den Code mal ein wenig verändert.
        PHP-Code:
        function read_data($data){
        $fp fopen($data"r");
            while (!
        feof($fp)) {
            
        $text fgets($fp,255);
            
        $array explode(" ",$text);
            return 
        $array;
            }
        fclose($fp);
        }

        print_r(read_data('test.txt'));
        //Ausgabe ein Array
        //Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 2 [4] => 5 ) 
        Hallo gourmet,
        Hallo Tobiaz,

        keine Ahnung warum mein Code bei Euch nicht läuft. Bei mir tuts (bis Array[3] ).
        Habe mal den Arrayinhalt mit print_r($array) geprüft.
        Ergebnis: Array[4]=>5 Passt!

        Dennoch z.B echo $array[3]; gibt 2 aus. So ist OK
        echo $array[4]; bringt die Fehlermeldung "Undefined Offset"
        $ho= $array[4]; und echo $ho; gibt logischerweise auch eine Fehlermeldung aus.

        Ich verstehe nicht was das soll.
        Habe gedacht vielleicht meine txt-Datei sei irgendwie nicht OK.
        Das kann aber auch nicht sein. Die Prüfung hat es gezeigt: Array[4]=>5
        Und von Array[0] bis Array[3] funktioniert ja einwandfrei.
        Danke und Grüße

        Kommentar


        • #5
          Weil dein Code nur eine Zeile ausliest und des fclose(); nie erreicht wird.

          Kommentar


          • #6
            keine Ahnung warum mein Code bei Euch nicht läuft.
            Habe ich nie behauptet. Ich habe nur eine deutlich einfachere Variante der Realisierung gewählt...

            Kommentar


            • #7
              Original geschrieben von Skaschy
              Weil dein Code nur eine Zeile ausliest und des fclose(); nie erreicht wird.
              ÄH
              Sicher wird das Ende erreicht, es ist einfach keine weitere Zeile vorhanden. Ausserdem hätte auch das keinen Einfluss, da der Filepointer bei Scriptende sowieso frei gegeben wird.

              @Canonn
              Irgendwas in deinem Script, oder in deiner Textdatei ist nicht so, wie du es geschildert hast. Darum kann das niemand nachvollziehen. Bitte zeige nochmals dein aktuelles Script (bitte in PHP-Tags!) und die Textdatei.
              Die einfachste Form hat dir aber TobiaZ schon genannt
              Gruss
              H2O

              Kommentar


              • #8
                Hallo H2O
                war par Tage mal nicht zuhause..

                Also meine txt Datei sieht inhaltlich etwa so aus:

                0 1 1 2
                und wird als daten_test.txt Datei gespeichert

                die einzelnen Zahlen stellen verschiedene Stauszustand dar. Dies Datei wird dann so ausgelesen (vielleicht gibt es bessere Lösungen aber es funktioniert so auch):

                PHP-Code:
                /**
                 * @Abruf Status
                 */

                function readata($data){
                    
                    
                $status=$data;

                $fp fopen($status,"r");
                        
                  while (!
                feof($fp)){ 
                  
                   
                $text  fgets($fp,255);
                   
                $array explode(" ",$text); 
                     
                   
                $ez$array[0];
                   
                $dz$array[1];
                   
                $app$array[2];
                   
                $fw$array[3];

                 
                /*Ausgabe-Test*/  
                echo $array[3/*Erhalte ich 2 und mit*/
                echo $array[4/*kommt Undefined Offset wenn ich die txt Datei entsprechend mit 5 = Array[4] ergänzt habe*/

                  
                   
                }
                  
                fclose($fp);

                createtable($ez,$dz,$app,$fw); /*hier wird eine Ausgabefunktion aufgerufen */
                }
                ?> 
                Aufruf der Funtion erfolgt so:

                PHP-Code:
                <?php
                /**
                Status Hausxy
                */
                $haus="c:\daten_test.txt";
                readata($haus);
                ?>
                Es funktioniert so einwandfrei.
                Nun wenn ich den txt Datei mit einem zusätzlichen Zahl ergänze,
                z.B so:

                0 1 1 2 5
                und entsprechend speichere dann wird bei der Zahl 5 (entspricht Array[4] )
                UNDEFINED OFFSET ausgegeben.

                Mit
                PHP-Code:
                print_r($array); 
                bekomme ich folgende Ausgabe:
                Array ( [0] => 0 [1] => 1 [2] => 1 [3] => 2 [4] => 5 )
                OK
                Aber z.B wenn ich testweise oben folgendes eingebe:
                PHP-Code:
                echo $array[3/*Erhalte ich 2 und mit*/
                echo $array[4/*kommt Undefined Offset*/ 
                Danke und Grüße

                Kommentar


                • #9

                  Mit
                  PHP-Code:
                  print_r($array); 
                  bekomme ich folgende Ausgabe:
                  Array ( [0] => 0 [1] => 1 [2] => 1 [3] => 2 [4] => 5 )
                  OK
                  Aber z.B wenn ich testweise oben folgendes eingebe:
                  PHP-Code:
                  echo $array[3/*Erhalte ich 2 und mit*/
                  echo $array[4/*kommt Undefined Offset*/ 
                  Da das so nicht sein kann, kann ich auch nicht weiterhelfen. Es könnte ja sein, dass in deiner Datei statt der Leerstelle ein Tab steht und damit explode() nicht funktionieren würde (liesse sich mit preg_split('/\s/', $text) umgehen). Da aber print_r() das richtig ausgibt, kann es auch daran nicht liegen.
                  Abgesehen davon, dass das natürlich eine typische Datenbankanwendung wäre.
                  Gruss
                  H2O

                  Kommentar


                  • #10
                    Es wäre wirklich hilfreich wenn du deinen CODE posten würdest. Das ist er nämlich nicht, denn da fehlen einige ; ... Wir können dir nur helfen wenn du uns den Code exakt gibts! (Und die Beispieldatei)

                    Gruß

                    Max

                    Kommentar

                    Lädt...
                    X