Zeile löschen aus Text Datei

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

  • Zeile löschen aus Text Datei

    Hi
    ich möchte aus einer Datei eine Zeile löschen und habe dazu folgenden Quelltext entworfen. Aber irgendwie steht am ende in der Variablen genau dieselben zeilen wie vorher und keine ist übersprungen worden.
    Könnt ihr mir helfen worans hakt?

    PHP-Code:
    $newfile='';

    $weg=$_POST["auswahl"];    //zu löschende Zeile
    $lines=file("Dateinamen.txt"); // Datei Zeilenweise in ein Array eingelesen

    $datei=fopen("datei.txt","w+");
    for(
    $I=0$I<count($lines); $I++)
    {
        
    // alle Zeilen (bis auf die zu Löschende) werden in eine neue Variable gespeichert
        
    if($lines[$I]!=$weg)
        {
            
    $newfile .= $lines[$I];
        }
    }
    fwrite($datei$newfile);
    fclose($datei); 
    Zuletzt geändert von Beram; 16.06.2007, 21:25.

  • #2
    das sollte eigentlich ausreichen:

    $lines=file("Dateinamen.txt");
    unset($lines[$_POST['auswahl']]);

    dann imploden und zurückschreiben.
    Zuletzt geändert von 3DMax; 16.06.2007, 21:31.

    Kommentar


    • #3
      Wenn du mir jetzt noch verrätst was "exploden" ist dann bin ich glücklich.
      Ich hab erst vor zwei wochen mit php angefangen und hab daher noch relativ wenig ahnung...

      EDIT
      stand da nicht eben noch exploden statt imploden?

      Kommentar


      • #4

        Kommentar


        • #5
          Original geschrieben von Beram
          EDIT
          stand da nicht eben noch exploden statt imploden?
          ja, war ein fehler, wollte dich nicht unnötig verwirren
          http://de3.php.net/manual/de/function.implode.php

          Kommentar


          • #6
            Also, ich habs jetzt mal so probiert, aber da ist immer nochn fehler drinne:

            PHP-Code:
            $newfile='';

            $weg=$_POST["auswahl"];    //zu löschende Zeile

            $lines=file("Dateinamen.txt"); // die Datei wird zeilenweise in ein Array eingelesen
            unset($lines[$_POST["auswahl"]]);
            $datei=fopen("datei.txt","w+");
            $newfile=implode("\n"$lines)

            fwrite($datei$newfile);        //an der Zeile meckert er!
            fclose($datei); 

            Kommentar


            • #7
              was meckert er denn?

              gruß
              Robert

              PS: schau mal aufs Ende der Zeile drüber!
              Zuletzt geändert von subabrain; 16.06.2007, 22:20.

              Kommentar


              • #8
                Das meckkert er:

                Parse error: parse error in C:\Programme\xampp\htdocs\loeschen.php on line 25

                Kommentar


                • #9
                  ist das semikolon jetzt gesetzt?

                  gruß
                  Robert

                  Kommentar


                  • #10
                    Oh man, jetzt raff ich was du meinst!^^
                    Ja, mit Semikolon gibts keine Fehlermeldung mehr, aber das löschen klappt immer noch net
                    Die Datei ist dieselbe wie vorher

                    Kommentar


                    • #11
                      was übergibst du denn in "auswahl" ?

                      den inhalt der zeile oder die zeilennummer?

                      letzteres sollte eigentlich funktionieren...

                      schreibrechte für die datei?

                      dateiname korrekt?
                      file("Dateinamen.txt");
                      aber
                      fopen("datei.txt"
                      greetz, high
                      Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
                      When everything else fails, manipulate the data...
                      Beschriftungen / Großformatdruck / Werbemittel

                      Kommentar


                      • #12
                        Original geschrieben von highrise
                        was übergibst du denn in "auswahl" ?

                        den inhalt der zeile oder die zeilennummer?
                        natürlich den Inhalt, wieso auch nicht!^^ Aber hab ich jetzt geändert

                        Und mit dem dateiname hattest du auch recht...
                        Jetzt klappts, vielen Dank euch beiden!

                        Gruß Beram


                        P.S.: Aber was mit meiner ersten version net stimmt weis ich immer noch net...

                        Kommentar


                        • #13
                          in der ersten version (abgesehen vom dateinnamen) stimmt dein vergleich vermutlich nicht...

                          $lines[$I] enthält am ende keinen Zeilenumbruch \n bzw. \r\n,

                          während $weg diesen enthält.

                          deshalb ist $lines[$I]!=$weg immer erfüllt...

                          greetz, high
                          Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
                          When everything else fails, manipulate the data...
                          Beschriftungen / Großformatdruck / Werbemittel

                          Kommentar


                          • #14
                            Meine Freude gestern war zu früh. Ich hatte was übersehen, es funktioniert doch net! Die While schleife ist vermutlich irgendwie endlos, denn die Datei kann gar nicht geladen werden.

                            PHP-Code:
                            $lines=file("Dateinamen.txt"); // die Datei wird zeilenweise in ein Array eingelesen

                            $weg=$_POST["auswahl"];    

                            $weg=$weg."\n";  // <--- Kanns sein das hier der Fehler liegt???

                            $datei=fopen("Dateinamen.txt","w+");
                            $befehl='';
                            $zaehler='0';

                            while (
                            $weg!=$befehl)
                            {
                                
                            $befehl fgets($datei);
                                
                            $zaehler++;
                            }

                            unset(
                            $lines[$zähler]);

                            $newfile=implode(""$lines);

                            fwrite($datei$newfile);
                            fclose($datei); 
                            @ highrise
                            ich hab auch da mal versucht das zu ändern, geht aber auch net! Ist wahrscheinlich derselbe Fehler wie hier

                            Kommentar


                            • #15
                              ich weiss nicht was für ein bs du hast aber kannsts ja mal mit "\r\n" versuchen evtl gehts dann ...

                              Robert

                              Kommentar

                              Lädt...
                              X