thomasN: Text an den Anfang einer Datei schreiben

Hallo!

Habe eine (Anfänger)-Frage zu PHP:
Bin gerade dabei, mir ein kleines Gästebuch zu basteln.

Wie mache ich es, dass in nachfolgendem Script der Text nicht an das Dateiende angehängt wird, sondern an den Dateianfang geschrieben wird, ohne dass dabei der bereits existierende Text überschrieben wird?

Habe für die "fopen"-Funktion keinen passenden Modus gefunden, vermute mal, dass ich daher mit "fopen" nicht das bezwecken kann, was ich möchte.

Wer kann mir weiterhelfen?

<?php
$eintrag = $_POST ["eintrag"];
$name = $_POST ["name"];
$email = $_POST ["email"];
$daten="Name: $name<br>\nE-Mail: <a href=mailto:$email>$email</a><br>\nEintrag: $eintrag<br><br>\n";
$datenbank = "eintraege.dat";
$datei = fopen($datenbank,"a");
fwrite($datei, $daten);

$datenbank = "eintraege.dat";
$datei = fopen($datenbank,"r");
fpassthru($datei);
?>

Gruß Thomas.

  1. Hallo,
    das geht glaube ich nur über umwege. ZUnächst musst du den kompletten Datei-inhalt einlesen.
    Dann schreibst du das neue in die Datei und zwar so das der Rest gelöscht wird.  Nun kannst du den zuvor eingelesenen Teil noch hinten dranhängen.

    Tschau

    Tobias

    --
    http://www.tobiasklare.de
    fo:) ch:? rl:( br:^ n4:° ie:{ mo:) va:| fl:) ss:| ls:<
    Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
    Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
  2. Hallo thomasN!

    Wer kann mir weiterhelfen?

    Ich versuchs mal:
    Schau Dir mal http://de3.php.net/manual/en/function.file-get-contents.php an.
    Wenn du die ganze Datei in einen Strign einliest, kannst du ja Problemlos davor was einfügen und hinterher dann alles wieder in die Datei schreiben.
    Solange die Datei nicht allzu groß ist sollte das keine Probleme machen würde ich sagen.

    Ach, ich hatte vorher noch was übersehen:
    'r+' Open for reading and writing; place the file pointer at the beginning of the file.
    Es scheint also doch eine Option für das zu geben, was du machen willst.
    (Lesetip: http://de3.php.net/manual/en/function.fopen.php)

    MfG
    Götz

    --
    Losung und Lehrtext für Dienstag, 27. Januar 2004
    Der Herr, euer Gott, ist gnädig und barmherzig und wird sein Angesicht nicht von euch wenden, wenn ihr euch zu ihm bekehrt. (2.Chronik 30,9)
    Jesus stieg aus und sah die große Menge; und sie jammerten ihn, denn sie waren wie Schafe, die keinen Hirten haben. (Markus 6,34)
    (http://www.losungen.de/heute.php3)
    1. 'r+' Open for reading and writing; place the file pointer at the beginning of the file.

      r+ hatte ich schon getestet. Hierbei wird der vorhandenen Text leider wieder überschrieben. Werde deinen anderen Tipp aber mal probieren.

      Gruß Thomas.

  3. Hello,

    1. zum Lesen und Schreiben öffnen
    2. testen, on ein exclusive-Lock möglich ist
    3. Datensätze in Array einlesen
    4. neu erzeugten Datensatz davor einfügen  [1]
    5. Sätze zurückschreiben
    (6. Dateibuffer flushen)
    7. Datei Schließen und Sperre aufheben (eigentlich umgekehrt, aber
       praktsich durch das Schließen)

    [1] Datensätze können aus Arrays bestehen, die mit serialize() als Dateigerechte Zeile aufbereitet werden. Keines der Elemente darf dann aber  CRLF enthalten. Das muss man ggf. vor dem serialize() austauschen (und hinterher iweder zurück) oder man codiert einfach den ganzen Datensatz noch z.B. mit base64encode()

    ...

    Such einfach mal im Forum nach diesen Funktionen un dIhrem Einsatz...

    Mehr als 250 Treffer sind Dir gewiss.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen