Lektion 16: In eine Text-Datei schreiben
In der vorigen Lektion haben wir gelernt, aus einer Textdatei zu lesen. Hier, in dieser Lektion, werden wir lernen, in eine Textdatei zu schreiben.
Die zwei Methoden sind ziemlich ähnlich, aber es gibt einen sehr wichtigen Unterschied: Sie müssen eine Schreiberlaubnis ("write permission") für die Datei haben. Das heißt, dass sich die Datei in einem Ordner befinden muss, für den Sie die nötigen Rechte haben.
Wenn Sie lokal auf Ihrem eigenen Computer arbeiten, können Sie die Rechte selbst setzen: Rechtsklick auf den Ordner und wählen Sie "Eigenschaften". Bei den meisten Webhostern haben Sie normalerweise einen Ordner, in dem das Schreiben erlaubt ist. Oft heißt dieser "cgi-bin", "log", "databases" oder etwas in der Art. Wenn Ihr Hoster dies zulässt, können Sie auch dort die Rechte selbst anpassen. Klicken Sie dann mit der rechten Maustaste auf einen Ordner in Ihrem FTP-Client und wählen "Eigenschaften", "Rechtevergabe" oder etwas ähnliches. Die Screenshots zeigen Ihnen, wie es mit FileZilla gemacht wird.
Weiteres finden Sie bestimmt auch im Supportbereich Ihres Webhosters.
Beachten Sie bitten, dass es die Textdatei sein muss, die in dem Ordner mit den Schreibrechten ist - nicht die PHP-Datei.
Die Textdatei für das Schreiben öffnen
In der gleichen Art und Weise wie für das Lesen, wird die fopen-Function für das Schreiben benutzt. Allerdings setzen wir den Modus jetzt auf "w" für Schreiben (writing) oder "a" für Anfügen (appending).
Der Unterschied zwischen Schreiben und Anfügen ist, wo sich der 'Cursor' befindet - entweder am Anfang oder am Ende der Textdatei.
In den Beispielen benötigen/benutzen wir eine leere Textdatei mit dem Namen textfile.txt - aber Sie können natürlich auch eine eigene Datei benutzen, wenn Sie möchten.
Lassen Sie uns jetzt zuerst die Datei für das Schreiben öffnen:
<?php // Öffnet die Textdatei $f = fopen("textfile.txt", "w"); // Schließt die Textdatei fclose($f); ?>
Beispiel 1: Schreibe eine Zeile in die Textdatei
Um eine Zeile zu schreiben, müssen wir die Function fwrite benutzen. Dies funktioniert so:
<html> <head> <title>In eine Text-Datei schreiben</title> </head> <body> <?php // Öffnet die Textdatei $f = fopen("textfile.txt", "w"); // Schreibt in die Textdatei fwrite($f, "PHP macht Spaß!"); // Schließt die Textdatei fclose($f); // Öffnet die Textdatei zum Lesen und liest den Inhalt aus $f = fopen("textfile.txt", "r"); echo fgets($f); fclose($f); ?> </body> </html>
Da wir die Datei zum Schreiben geöffnet haben, wird die Zeile am Anfang der Datei eingefügt und überschreibt eine bereits existierende Zeile. Wenn wir stattdessen zum Anfügen öffnen, wird die Zeile am Schluß angefügt und es würde jedes Mal eine Zeile mehr.
Beispiel 2: Einen Textblock zu einer Textdatei hinzufügen
Natürlich ist es auch möglich, einen ganzen Block, anstatt einer einzelnen Zeile, hinzuzufügen. Dies geht so:
<html> <head> <title>In eine Text-Datei schreiben</title> </head> <body> <?php // Öffnet die Textdatei $f = fopen("textfile.txt", "w"); // Schreibt in die Textdatei fwrite($f, $_POST["textblock"]); // Schließt die Textdatei fclose($f); // Öffnet die Textdatei zum Lesen $f = fopen("textfile.txt", "r"); // Liest den Inhalt aus echo fgets($f); fclose($f); ?> </body> </html>
In der nächsten Lektion sehen wir uns eine andere Art der Datenspeicherung an: Datenbanken.