PHP 4.3

10.8 Daten schreiben

In den vorherigen Abschnitten haben Sie gelernt, Dateien zu öffnen und Daten auszulesen. Viel spannender ist es natürlich, auch Daten hinzufügen, d.h. schreiben zu können, die Ihrer Website die heutzutage erforderliche Dynamik verleihen. Denken Sie zum Beispiel an die Möglichkeit einer Benutzerregistrierung mit der Speicherung individueller Einstellungen. Eine andere Anwendung für das Schreiben in Dateien könnte das Speichern von Bestellungen in einem Onlineshop sein.

PHP bietet die folgende Funktion zum Schreiben von Daten:

fputs(Dateizeiger, Zeichenkette, Länge)

Schreibt an der aktuellen Zeigerposition eine Zeichenkette. Optional kann durch den Parameter Länge auch nur ein Teil der Zeichenkette geschrieben werden. Diese Funktion kann auch unter dem Namen fwrite() verwendet werden.

Genauso wie beim Lesen, wandert bei Schreibvorgängen der Zeiger mit. PHP schreibt genau dort, wo sich der Zeiger gerade befindet. Daten, die dort vielleicht vorher waren, werden einfach überschrieben.
Hier ein kleines Beispielskript zum Schreiben von Daten, welches verdeutlichen soll, wie die Liste von Gegenständen in unserer Übungsdatei test.txt um einen neuen Gegenstand ergänzt wird:

Beispielskript Dateien schreiben
<?php
$fp = @ fopen("test.txt","r+"); if ($fp == false) { echo "Datei nicht gefunden!"; } else { echo "Datei erfolgreich geöffnet, der Inhalt ist:<br><br>"; while (! feof($fp)) { $zeile = chop( fgets($fp, 4096)); if ($zeile != "") { echo $zeile . "<br>";   } } fputs($fp,"Ein Schloss\n"); fclose($fp); } ?>

Wenn Sie das Skript aufmerksam durchlesen, wird Ihnen auffallen, dass wir vor dem Schreiben der Daten die gleiche while-Schleife einsetzen, wie jene, die schon beim letzten Skript zum Auslesen von Daten zum Einsatz kam. Der Grund für dieses Vorgehen ist die Art, wie PHP Lese- und Schreibvorgänge durchführt.
Wenn Sie sich zurückerinnern, befindet sich der Zeiger beim Öffnen einer Datei mit dem Modus "r+" stets am Anfang, also bei Position 0. Da wir jedoch nicht die erste Zeile überschreiben möchten, sondern die Zeichenkette "Ein Schloss" am Ende der Liste anfügen wollen, ist es notwendig, mit Hilfe der while-Schleife zuerst die bestehenden Zeilen zu durchlaufen.
Eleganter können Sie die eben skizzierte Aufgabe bewältigen, indem Sie anstelle des Modus "r+" einfach "a" verwenden. Dabei wird der Dateizeiger beim Öffnen automatisch ans Ende der Datei gesetzt.

Kommentare (0)

Ihr Kommentar

Name