Daten in einer TXT-Datei suchen und löschen ...

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

  • Daten in einer TXT-Datei suchen und löschen ...

    Hallo Leute,

    ich bin gerade dabei, einen Newsletter zu programmieren. Das einzige, was bisher nicht klappt, ist, wenn sich der Nutzer aus der Verteilerliste löschen lassen will. Dazu soll er seinen Namen und seine eMail-Adresse eingeben.

    Mein Problem ist jetzt: Wie löse ich es am besten, dass das Skript nach der Zeile in der Textdatei sucht, diese entfernt und somit den Nutzer löscht? Dass ich mit $daten = file($variable) jede Zeile in ein Arrayfeld lesen kann, weiß ich schon. Womit ich aber die eingegebenen Daten und die Zeile in der Datei vergleiche und lösche, weiß ich nicht.

    Hat jemand eine Idee? Ihr würdet mir sehr helfen.

    Innuendo

  • #2
    hier habe ich dir doch schon die sachen gepostet.
    http://www.php-resource.de/forum/sho...9785#post89785

    crosspostings sind underwünscht.

    vergleichen kannst du mit IF
    Zuletzt geändert von Abraxax; 19.01.2003, 19:57.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Zu Deiner Information: Ich betreibe kein Crossposting, sondern stelle eine einfache Frage zu einem Problem.

      Und Dein Satz "Vergleichen kannst Du mit IF" ist genauso hilfreich, als wenn Du geschrieben hättest "Morgen ist Mittwoch". Ich bin relativer PHP-Neulig und kann mit sochen nichtssagenden Sätzen wie Deinen überhaupt nichts anfangen. Ich möchte einfach mal eine nützliche Antwort. Mal abgesehen davon, dass die Forenseite, die Du hier gepostet hast, nicht die Lösung zu meinem Problem war. Ich schlage vor, dass Du entweder den PHP-Neulingen eine Lösung (KEIN Hinweis auf einen anderen Foreneintrag) anbietest und uns ungemein damit hilfst ODER es einfach sein lässt. Dieses Forum ist schon übergroß, gezielt eine Information zu finden, ist oftmals sehr schwierig. Lieber schreibe ich mein Problem nochmals auf, wo ich es dann auch finde anstatt stundenlang Beiträge zu suchen, die dann "Vergleichen kannst Du mit IF" beinhalten.

      In diesem Sinne

      Kommentar


      • #4
        ich weiss nicht, was du hast. ich versuche hier immer zu helfen.
        damit du jetzt nicht weinst, habe ich dir mal ein kleines script
        gemacht, was genau das macht, was du willst. so muss man auch
        kein php lernen, um es selber zu können.

        PHP-Code:
        <?php

        $fp_in  
        fopen ("input_datei.txt""r");
        $fp_out fopen ("output_datei.txt""w");

        while (!
        feof($fp_in)) {
          
        $line fgets $fp_in4096 );
          if (!
        strstr($line"zu-prüfen-was-NICHT-darf-in-einer-zeile-diese-wird-nicht-mehr-gespeichert")) {
            
        fputs $fp_out$line);
          }
        }

        fclose($fp_in);
        fclose($fp_out);

        ?>
        EDIT:
        nicht getestet, sollte aber gehen.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Wie kommst Du darauf, dass ich jetzt weine? Was bist Du denn für einer?

          Geht das auch mit ein und derselben Datei anstatt mit 2 Dateien?

          Kommentar


          • #6
            ein bisschen netter könntest schon sein zu den noobs.
            vielleicht solltest den fehler auch an dir suchen.
            Seien wir realistisch, versuchen wir das unmögliche. - Chè Guavara

            Kommentar


            • #7
              hey. das war nciht böse gemeint. hatte vielleicht einen smiley hinmachen sollen ...

              @Innuendo
              mit ein und der gleichen datei gehts nciht. da du ja noch einliest, während die andere datei schon geschrieben wird.

              hinterher kann man die datei aber wieder umbenennen.
              habe das script noch mal leicht verändert.

              PHP-Code:
              <?php

              $dat_in  
              "input_datei.txt";
              $dat_out "output_datei.txt";

              $fp_in  fopen ($dat_in"r");
              $fp_out fopen ($dat_out"w");

              while (!
              feof($fp_in)) {
                
              $line fgets $fp_in4096 );
                if (!
              strstr($line"zu-prüfen-was-NICHT-darf-in-einer-zeile-diese-wird-nicht-mehr-gespeichert")) {
                  
              fputs $fp_out$line);
                }
              }

              fclose($fp_in);
              fclose($fp_out);

              rename $dat_out$dat_in);

              ?>
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                @cheeby:

                Ist das hier ein PHP-Forum oder eine Selbsthilfegruppe? Ich suche überhaupt nichts an mir, ich suche nur noch einer Lösung für mein Newsletter-Problem. Was soll ich dann von "Vergleichen kannst Du mit IF" halten? Das weiß ich auch, dass ich mit IF vergleichen kann. Soweit war ich schon. Niemand hat verlangt, dass hier jemand die Arbeit für mich übernehmen soll. Aber es wird ja wohl verlangt sein, hier Antworten zu finden. Aber anscheinend nimmt man PHP-Neulinge nicht so ernst hier.

                Kommentar


                • #9
                  @Innuendo

                  das geht auch mit einer Datei:

                  1. Datei mit file() einlesen in ein array
                  etwa
                  $file = file("filename");
                  //dann ne foreach
                  foreach($file as $row){
                  // hier prüfen ob die Zeile den text beinhaltet
                  // wenn ja dann füllen wir eine variable mit dem inhalt der Zeile
                  $newRows .= $row;
                  // wenn nicht nichts tun
                  }
                  //jetzt die Datei wieder füllen (überschreiben)

                  $fp = fopen("filename", "w");
                  fwrite($fp,newRows);
                  fclose($fp);
                  Beantworte nie Threads mit mehr als 15 followups...
                  Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                  Kommentar


                  • #10
                    Original geschrieben von Innuendo
                    @cheeby:

                    Ist das hier ein PHP-Forum oder eine Selbsthilfegruppe? Ich suche überhaupt nichts an mir, ich suche nur noch einer Lösung für mein Newsletter-Problem. Was soll ich dann von "Vergleichen kannst Du mit IF" halten? Das weiß ich auch, dass ich mit IF vergleichen kann. Soweit war ich schon. Niemand hat verlangt, dass hier jemand die Arbeit für mich übernehmen soll. Aber es wird ja wohl verlangt sein, hier Antworten zu finden. Aber anscheinend nimmt man PHP-Neulinge nicht so ernst hier.
                    das war eigentlich für abra bestimmt und nciht für dich.
                    wenn du zulange in der materie bist wirst einfach ein bisschen blinder.

                    so und nun schluß mit offtopic
                    Seien wir realistisch, versuchen wir das unmögliche. - Chè Guavara

                    Kommentar


                    • #11
                      @MelloPie
                      das mit file() ist ja ok.

                      ich habe jetzt nur eine verständnisfrage.

                      was ist, wenn die datei ellengroß ist. sagen wir mal ein paar MB
                      geht das dann noch sauber mit dem array?

                      es wird doch der speicher des servers dafür reserviert. wenn viele user das machen, kann es doch eng werden.

                      oder liege ich da falsch?
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        @MelloPie:

                        Danke Dir. Werde es gleich mal ausprobieren.

                        Kommentar


                        • #13
                          @abraxas
                          das belastet natürlich den Speicher, die Frage ist wieviele das gleichzeitig machen???
                          Ich lese oft files mit 4-8 MB über file() ein das dauert ein paar Sekunden, dann ist das Ergebnis sichtbar.

                          Wenn das mehrere gleichzeitig machen ist aber auch die fopen geschichte zu beobachten, denn wie geht man mit den flocks um, etc.
                          Wie lange ist bei einem riesen file die Datei geöffnet in dem o.g. Beispiel?
                          Beantworte nie Threads mit mehr als 15 followups...
                          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                          Kommentar


                          • #14
                            Original geschrieben von MelloPie
                            Wie lange ist bei einem riesen file die Datei geöffnet in dem o.g. Beispiel?
                            ok. vielen dank. muss man also bei bedarf abschätzen.

                            ich habe das bisher nie genutzt, das ich meist mysql verwende. kann dir jetzt also auch nicht sagen, ob die fopen-variante schneller als file-variante ist.
                            hatte den code auch eben erst erstellt und wollte unabhängig von der dateigröße sein ...
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              Aber wieviel kann ich nun in ein Array einlesen per file? Oder ist das abhängig von meinem Speicherplatz auf dem Server? In meinem Fall stehen 150 MB zur Verfügung.

                              Kommentar

                              Lädt...
                              X