Zeile löschen aus Text Datei

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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); 
    Last edited by Beram; 16-06-2007, 20:25.

  • #2
    das sollte eigentlich ausreichen:

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

    dann imploden und zurückschreiben.
    Last edited by 3DMax; 16-06-2007, 20:31.

    Comment


    • #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?

      Comment


      • #4

        Comment


        • #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

          Comment


          • #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); 

            Comment


            • #7
              was meckert er denn?

              gruß
              Robert

              PS: schau mal aufs Ende der Zeile drüber!
              Last edited by subabrain; 16-06-2007, 21:20.

              Comment


              • #8
                Das meckkert er:

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

                Comment


                • #9
                  ist das semikolon jetzt gesetzt?

                  gruß
                  Robert

                  Comment


                  • #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

                    Comment


                    • #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

                      Comment


                      • #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...

                        Comment


                        • #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

                          Comment


                          • #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

                            Comment


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

                              Robert

                              Comment

                              Working...
                              X