Falsche Zeile wird gelöscht

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

  • Falsche Zeile wird gelöscht

    Hallo.

    Ich möchte eine Zeile in einem Textfile löschen.
    Ich hänge aber auf halber Strecke fest.
    Im folgenden Script wird beim Schreiben des neuen Textfiles immer
    nur die erste Zeile ignoriert. Egal welchen Wert $file_new hat.

    Was ist hier falsch?:
    PHP-Code:
    $old fopen("../songs/".$user."/song_liste.txt","r+");
    $new fopen("../songs/".$user."/temp.txt""w");
    $line_no 0;
    while(
    $line fgets($old1024)) {
      if (
    $line_no++ == $file_new)
        continue;
    fputs($new$line);

    Danke

  • #2
    $line_no=-1

    da du mit $line_no++ in der schleife anfängt. und in array beginnt bei 0 und nicht bei 1.

    das erstmal zum ignorieren der ersten zeile.

    wo du was löscht is mir gerade schleierhaft. du kopierst doch von song_liste.txt in die temp.txt, oder?


    stopp: ich glaube mit dem ++ hab ich quatsch geredet muss nochmal nachdenken... (montagsschwäche - ist bekannt bei mir )
    **********
    arkos
    **********

    Kommentar


    • #3
      frage: woher kommt $file_new bei dir?

      verstehe die logik deines scriptes nicht wirklich - wat willste löschen??
      **********
      arkos
      **********

      Kommentar


      • #4
        Hi

        Na bis jetzt habe ich das so verstanden.
        Wenn ich eine Zeile aus einem Textfile löschen will muss ich das ganze File
        auslesen, die betreffende Zeile entfernen, alles wieder abspeichern.

        Ich dachte hier passiert nun Folgendes:
        Alle Zeilen werden in $new geschrieben. Bis auf jene, die identisch mit $file_new ist.
        (Die Variable ist ein String der mir mit echo auch korrekt wiedergegeben wird.)
        Die soll ignoriert werden.

        Wenn der ganze Rest in die neue Datei geschrieben ist wird die Alte entsorgt und die Neue bekommt den Namen der Alten.
        (He klingt ja fast wie bei D.Bohlen )

        Bin ich da völlig auf dem Holzweg?
        Ich machs zum ersten Mal.

        Kommentar


        • #5
          bischen "von hinten durch die brust ins auge" was du da machst

          - lies mit file deine datei in ein array.
          - unsette das array-element, in dem sich die gewünschte zeile befindet.
          - implode das array zu einem string.
          - überschreibe die (alte) textdatei mit dem neuen inhalt.
          Kissolino.com

          Kommentar


          • #6
            warum nicht so? datei öfnen und einlesen
            PHP-Code:
            while($line fgets($old1024)) 
            {
              if (
            bedingung falsch)
              {
                 
            // daten in eine variable schreiben
                 
            $new_string .= $line."\n";
               }

            neuen string in einem rutsch in datei schreiben.

            gruß
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              Das war bisher das einzige Modell was ich zu verstehen geglaubt habe.
              Ich habs von Hier.

              Kommentar


              • #8
                Original geschrieben von Spelmann

                Ich machs zum ersten Mal.

                klingt schon weniger nach bohlen

                wurzel und kroff haben beide einen durchaus gehbaren weg beschrieben.


                edit: kropff (sorry )
                **********
                arkos
                **********

                Kommentar


                • #9
                  edit: kropff (sorry )
                  OffTopic:
                  macht nicht, den namen schreiben alle falsch, das gibt es die abenteuerlichsten kombinationen


                  gruß
                  peter
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10
                    von deiner seite:
                    Für dieses Problem gibt es keine elegante oder effiziente Lösung.

                    für deine belangen habe die beiden aber eine elegante lösung beschrieben...
                    **********
                    arkos
                    **********

                    Kommentar


                    • #11
                      Original geschrieben von Kropff
                      macht nicht, den namen schreiben alle falsch, das gibt es die abenteuerlichsten kombinationen

                      OffTopic:
                      pfffuuuuhhhh danke ;-))
                      **********
                      arkos
                      **********

                      Kommentar


                      • #12
                        @Peter

                        Wenn ichs so versuche:
                        PHP-Code:
                        $old fopen("../songs/".$user."/song_liste.txt","r+"); // Öffnet die Liste
                        while($line fgets($old1024)) 
                        {
                          if (
                        $line != $file_new)
                          {
                             
                        // daten in eine variable schreiben
                             
                        $new_string .= $line."\n";
                           }

                        bekomme ich aber eine Fehlermeldung:
                        Code:
                        Notice: Undefined variable: new_string in
                         C:\Programme\XAMPP\xampp\htdocs\ybeo_bibliothek\scripte\loeschen.php on line 26

                        Kommentar


                        • #13
                          Du musst new_string natürlich mit einem sinnvollen Wert initialisieren, bevor du versuchst etwas an seinen Wert anzuhängen. Denn an etwas, dass es noch gar nicht gibt, kann man schwerlich etwas anhängen, oder?
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            Klar soweit.
                            Klar aber nicht was ich mit $new_string anstellen muss. Was ist mit Initialisieren gemeint wahsaga?
                            Ich dachte da stecken nun alle Zeilen drin bis auf die Gefilterte.

                            Kommentar


                            • #15
                              Original geschrieben von Spelmann
                              Klar aber nicht was ich mit $new_string anstellen muss. Was ist mit Initialisieren gemeint
                              Einer Variablen einen (Start-)Wert zu geben, bevor sie zum ersten Mal benutzt wird.
                              Ich dachte da stecken nun alle Zeilen drin bis auf die Gefilterte.
                              Ja, anschließend - weil du alle Zeilen bis auf die gefilterte in deiner Schleife an $new_string anfügst.

                              Aber wie gesagt, zum Anfügen muss erst mal etwas da sein, an das angefügt werden kann. Und das ist im ersten Schleifendurchlauf noch nicht der Fall. Also initialisiere die Variable vor dem Einstieg in die Schleife.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X