Mark: Datensatz aus *.txt und *.csv löschen

Ein "Hallo" an alle,

schon irgendwie komisch, bekomme komplette Dateien gelöscht aber keine einzelnen Datensätze aus einer *.csv

suche schon ein paar Stunden nach einer Lösung wie ich aus einer kleinen DatenBank, die als *.csv gespeichert ist, einen einzelnen Datensatz lösche.
Oder geht das nur durch den Umweg, alle Datensätze ausser der zu löschenden auszulesen und die *.csv dann zu überschreiben?

Beispiel, habe eine *.csv mit folgendem Inhalt:

ID;Name;Strasse;PLZ;Ort
1;Mueller;Meierstr.1;33333;Kuhkaff01
2;Meier;Muellerstr.2;44444;Kuhkaff02
3;Schmidt;Hauptstr.3;55555;Kuhkaff03

...so, Datensatz 2 soll gelöscht werden, und nun?
Habe ja in PHP nur "w" und "a" zur Verfügung, also entweder überschreiben, oder anhängen. Sehe ich das verkehrt?

Vielleicht ist die Lösung ja auch wieder so simpel, dass es nirgends mal mehr erwähnt wird *g*

Hope es kann mir einer einen Tip geben, danke schonmal

Gruss Mark

  1. Hallo,

    ID;Name;Strasse;PLZ;Ort
    1;Mueller;Meierstr.1;33333;Kuhkaff01
    2;Meier;Muellerstr.2;44444;Kuhkaff02
    3;Schmidt;Hauptstr.3;55555;Kuhkaff03

    ...so, Datensatz 2 soll gelöscht werden, und nun?
    Habe ja in PHP nur "w" und "a" zur Verfügung, also entweder überschreiben, oder anhängen. Sehe ich das verkehrt?

    Die einzige Möglichkeit die ich da sehe ist, das komplette File laden, meinetwegen zelienweise in einen array packen, das betreffende Arrayfeld löschen und dann wieder in die Datei (über)schreiben, also nicht anhängen.

    Grüße
    Holger

    1. Die einzige Möglichkeit die ich da sehe ist, das komplette File laden, meinetwegen zelienweise in einen array packen, das betreffende Arrayfeld löschen und dann wieder in die Datei (über)schreiben, also nicht anhängen.

      Hmmm, hab's mir schon fast gedacht, ähnlich ist meine Möglichkeit ja auch schon, ich suche im Prinzip nach allen IDs, die nicht-gleich 2 sind und überschreibe dann.

      Dachte man könnte mit irgendeiner Funktion "gezielt" ID 2 löschen. Daraus hätte sich auch wahrscheinlich die Möglichkeit ergeben, Datensätze zu editieren, btw. den alten zu löschen und einen neuen anzuhängen

      Naja, Danke trotzdem ;-)

      1. Also
        file ist:

        1|bla|bla|blup
        2|hm|bla|hm
        3|xyz|abc|cde

        Dann in der PHP schreibst du:

        <?
        $array = file("dateiname.txt");
        $id_zum_loeschen = 2;
        foreach($array as $v) {
         $teile = explode("|", $v);
         if($teile[0] != $id_zum_loeschen) {
          $neu .= $v;
         }
        }
        $fp = fopen("dateiname.txt", "w+");
        fwrite($fp, $neu);
        fclose($fp);
        ?>