kostenloser Webspace werbefrei: lima-city


zeile aus datei löschen? :(

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    c*****n

    also ich hab ne frage ^^
    ich hab eine datei z.B. datei.db, meine frage lautet jetzt wie
    kann ich die datei ?ffnen und eine bestimmte zeile daraus l?schen?
    geht das ?berhaupt? weil sonst m?sste ich ja f?r jeden eintrag eine neue
    datei erstellen... das is etwas l?sstig ^^ der aufbau in der datei is

    1|wert|wert u.s.w.
    2|wert|wert u.s.w.
    3|wert|wert u.s.w.

    die zahl entspricht der id.. auslesen anhand der id geht ja das hab ich auch schon aber l?schen bekomm ich irgendwie nich auf die reihe :/ w?re f?r schnelle hilfe dankbar :) und f?r langsame nat?rlich auch ;>

    schonma thx, mfg cracken
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. ?hm so als tipp nimm ne datenbank das is wesentlich einfacher ^^
    aber um dein prob trotzdem zu l?sen hier:

    $zeiletodelete = "2"; // Zeile 2 wird gel?scht

    $inhalt = "";
    $datei = fopen("datei.dbl", "w");
    while (!feof($datei))
    {
    $zeile = fgets($datei, 4096);
    if($zeile=='$zeiletodeltet") { }
    else
    {
    $inhalt .= $zeile;
    fputs($datei, $inhalt);
    }
    }
    fclose($datei);
  4. 0******a

    In dem Beispiel von lucas9991 sind drei Fehler:
    1. Vergleich von $zeile mit $zeiletodelete:
    $zeile ist der Inhalt der aktuell eingelesenen Zeile und wird nie einfach nur "2" sein, wenn crackens Angaben zum Aufbau der Tabelle stimmen.
    2. fputs() schreibt dorthin, wo der Dateizeiger gerade steht. Da man gerade was gelesen hat, wird dorthin geschrieben, wo zuletzt was gelesen wurde. Das w?rde die ganze Datei vollkommen durcheinanderbringen.
    3. Wenn die Datei mit fopen() mit dem Modus "w" ge?ffnet wird, gibt es sowieso nichts mehr zum Lesen, da fopen() mit dem Modus w (write) die Datei erstmal komplett l?scht.
  5. :holy::holy::holy::holy:
    dann bleib ich doch bei datenbanken :biggrin:
    aber wie heisst das script denn dann richtig?
  6. 0******a

    $zeiletodelete = 2; // Zeile 2 wird gel?scht
    $inhalt = "";
    $counter = 0;

    $datei = fopen("datei.dbl", "r+");

    while (!feof($datei))
    {
       $counter++;
       $zeile = fgets($datei, 4096);

       if ($counter != $zeiletodelete)
          $inhalt .= $zeile;
    }

    rewind($datei);
    ftruncate($datei, 0);
    fputs($datei, $inhalt);
    fclose($datei);


    Es gibt nur ein Problem bei diesem Code: Was passiert, wenn zwei User gleichzeitig das Skript ausf?hren und die Datei somit von zwei Prozessen gleichzeitig bearbeitet wird? Das kommt zwar in der Realit?t wirklich selten vor, aber wenn es passiert, dann ist mit der Datei (zumindest f?r Skripte) nichts mehr anzufangen. Um das zu verhindern, sollte man eine andere Datei als "Ampel" bestimmen und sich die Funktion flock() (kennt eigentlich jeder, der in C schon mal was Umfangreicheres unter Linux/Unix programmiert hat) anschauen.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!