Problem mit Zeile ändern in .txt

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

  • Problem mit Zeile ändern in .txt

    Hallo liebe Forum-Mitglieder,

    ich möchte eine Zeile in einer mehrzeiligen Textdatei der Form

    $id|$data1|$data2|$data3|$data4|| \\n

    ändern. Letztlich bekomme ich als Ergebnis keinerlei
    Fehlermeldung, dafür ist meine Datei nach Ausführung
    meines Codes komplett leer.
    Sieht jemand, was ich falsch gemacht habe?

    PHP-Code:
    $new_row "$id|$data1|$data2|$data3|$data4|| \\n";

    $file fopen($file,"w");

    while(!
    feof($file))
    {
      
    $lines explode("||"fgets($file6000));
      foreach(
    $lines as $line)
      {
        
    $arr explode("|"$line);
        
        if(
    $arr[0] == $_POST["id"])
        {
          
    $line $new_row;
          
    fwrite ($file$line);
          
          echo 
    "Der Eintrag mit der ID ".$_POST["id"]." ist erfolgreich geändert
    worden.<br><br><input type=\"button\"
    onClick=\"window.location.href='?validCode=
    $validCode'\" value=\"zur&uuml;ck\">";    
        }
      }
    }

    fclose($file); 
    Zuletzt geändert von kerbstone; 29.04.2007, 10:56.

  • #2
    Was macht dein zweiter Parameter von fopen()?

    Kommentar


    • #3
      lediglich schreiben, muss ich a+ nehmen?

      Kommentar


      • #4
        Du mußt das Manual lesen!

        Kommentar


        • #5
          Das Manual bezüglich der Schreibvarianten
          kenne ich nun, aber mit lesen und schreiben (a+)
          erfüllt der Code auch nicht seine Aufgabe...
          Es scheint noch woanders ein Fehler zu sein,
          den ich nicht sehe.

          Kommentar


          • #6
            'r' Öffnet die Datei nur zum Lesen und positioniert den Dateizeiger auf den Anfang der Datei.
            'r+' Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei.
            'w' Öffnet die Datei [COLOR=red]nur zum Schreiben[/COLOR] und setzt den Dateizeiger auf den Anfang der Datei sowie die [COLOR=red]Länge der Datei auf 0 Byte[/COLOR]. Wenn die Datei nicht existiert wird versucht sie anzulegen.
            'w+' Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert, wird versucht sie anzulegen.
            'a' Öffnet die Datei nur zum Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen.
            'a+' Öffnet die Datei zum Lesen und Schreiben. [COLOR=red]Positioniert den Dateizeiger auf das Ende der Datei[/COLOR]. Wenn die Datei nicht existiert, wird versucht sie anzulegen.
            Zuletzt geändert von tontechniker; 29.04.2007, 11:50.
            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

            Kommentar


            • #7
              Original geschrieben von tontechniker

              'r' Öffnet die Datei nur zum Lesen und positioniert den Dateizeiger auf den Anfang der Datei.
              'r+' Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei.
              'w' Öffnet die Datei nur zum Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert wird versucht sie anzulegen.
              'w+' Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert, wird versucht sie anzulegen.
              'a' Öffnet die Datei nur zum Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen.
              'a+' Öffnet die Datei zum Lesen und Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen.
              Naja, funktioniert trotzdem nicht, schade, aber danke für
              eure Hilfe.

              Kommentar


              • #8
                Zeig deinen aktuellen Code und beschreibe den Fehler.

                Kommentar


                • #9
                  Mein Fehler lautet:

                  Warning: fwrite(): supplied argument is not a valid stream resource
                  in /www/htdocs/beta/schmoll/myquestions.php on line 280

                  und mein aktueller Code sieht folgender Maßen aus:

                  PHP-Code:
                  $new_row "$id|$data1|$data2|$data3|$data4|| \n";

                  $file fopen($file,"a+");

                  while(!
                  feof($file))
                  {
                    
                  $lines explode("||"fgets($file6000));
                    foreach(
                  $lines as $line)
                    {
                      
                  $arr explode("|"$line);
                      
                      if(
                  $arr[0] == $_POST["id"])
                      {
                        
                  $line $new_row;
                        
                  fwrite ($fh$line);
                        
                        echo 
                  "Der Eintrag mit der ID ".$_POST["id"]." ist erfolgreich geändert
                  worden :)<br><br><input type=\"button\" 
                  onClick=\"window.location.href='?validCode=
                  $validCode'\"
                  value=\"zur&uuml;ck\">"
                  ;    
                      }
                    }
                  }

                  fclose($file); 
                  Zuletzt geändert von kerbstone; 01.05.2007, 19:48.

                  Kommentar


                  • #10
                    Du übergibst fwrite() ein $fh. Aber deine Dateiresource hast du in einer anderen Variablen gespeichert; nämlich welcher?

                    Kommentar


                    • #11
                      Ich glaube $file.

                      Kommentar


                      • #12
                        Das Problem nun ist, dass die alte Zeile aber bestehen bleibt.
                        Ich dachte dass diese nun überschrieben wird.

                        Kommentar


                        • #13
                          Aufgrund welcher Codezeilen hast du das gedacht?

                          Kennst du eigentlich serialize(), unserialize(), file_get_contents() und file_put_contents()?

                          Kommentar


                          • #14
                            Das dachte ich aufgrund von

                            $line = $new_row;
                            fwrite ($fh, $line);

                            und zu den spezifischen Audrücken:
                            Nein, die kannte ich noch nicht.
                            Ich lese mich mal ein.

                            Kommentar


                            • #15
                              Warum wunderst du dich?
                              'a+' Öffnet die Datei zum Lesen und Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen.
                              Reichte die farbliche Markierung irgendwie nicht? Und wo der Dateizeiger $fh herkommt hasst du auch noch nicht verraten.
                              Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                              Kommentar

                              Lädt...
                              X