E-Book Startseite Karteikarten-Programm
0

Grundlagen von Dateien

Für gute Programmierer oder größere Skripte ist es notwendig Daten zu speichern und was eignet sich dazu besser als eine Datei. Der erste Schritt ist es immer eine Datei zu öffnen. Dazu speichern benötigen wir die Funktion fopen. Als Parameter müssen zwei Werte übergeben werden. Beide Werte müssen in Anführungszeichen gesetzt werden. Der 1. Wert ist der Pfad. Der 2. Wert bestimmt den Modus. Dabei gibt es jedoch einiges zu beachten. Denn es muss zwischen Lesen, Schreiben, Lesen und Schreiben, zwischen Dateianfang und Dateiende, als auch zwischen Datei anlegen oder nicht unterschieden werden. Dafür haben wir unter diesem Text eine Tabelle. Wir haben als Beispiel einen Linkcounter erstellt. Dieser gibt als erstes den alten Status aus. Wenn nun auf den Button gedrückt wird, werden die neue Werte ausgegeben und in der Datei gespeichert.

Modus-Kürzel Daten werden geschrieben an ... der Datei Zweck kann neue Dateien erstellen
a das Ende Daten Schreiben Ja
a+ das Ende Daten Schreiben und Lesen Ja
r den Anfang Daten Lesen Nein
r+ den Anfang Daten Lesen und Schreiben Nein
w den Anfang Daten Schreiben Ja
w+ den Anfang Daten Lesen und Schreiben Ja
$dateizugriff = fopen("linkcounter.txt","r+");

Als nächstes lesen wir die Datei ein. Dazu verwenden wir fgets. Dieser Wert muss wieder als Wert in einer weiteren Variabel gespeichert werden. Nach dem Wort fgets benötigen wir eine Klammer, in der wir die Variabel für die Datei festlegen und danach eine Zahl. Diese Zahl legt fest wie viele Zeichen maximal ausgelesen werden. In unserem Beispiel würde natürlich eine kleine Zahl (z. B. 5) reichen. Wir verwenden nun einfach einen größeren Wert. Im Endeffekt ist es eigentlich fast egal, solang der Counter die Stellenanzahl nicht überschreitet. Wir verwenden normalerweise immer höhere Zahlen. Nun im nächsten Schritt prüfen wir ob die Datei Inhalt hat. Wenn die Datei kein Inhalt hat wird der Wert auf 0 gesetzt. Dazu benötigen wir eine kleine if-Abfrage. Danach geben wir den aktuellen Stand des Counters aus und geben dann noch 2 Zeilenumbrüche aus, diese brauchen wir später, dass der Counter auch einigermaßen ordentlich aussieht. Das sieht so aus:

$zaehlstatus = fgets($dateizugriff, 100);
if($zaehlstatus == "") {
    $zaehlstatus = 0;
}
echo "Aktueller Status: ".$zaehlstatus;
 
echo "<br /><br />";

Der nächste Schritt wäre nun das Formular zu erstellen. Dieses Formular hat ein Button. Dieser Button führt dann später in einer if-Abfrage verschiedene Befehle aus. In diesem Teil wird ein HTML-Formular mit einem Absend-Button geschrieben. Dieser Teil wird in einer Variabel gespeichert und dann ausgegeben. Danach geben wir wieder 2 Zeilenumbrüche aus. Das sieht so aus:

$seiteninhalt = "
<form action='datei1.php' method='POST'>
<input type='submit' name='link' value='Status erh&ouml;hen' />
</form>";
echo $seiteninhalt;
 
echo "<br /><br />";

Nun benötigen wir eine if-Abfrage. Die if-Abfrage wir eingeleitet, wenn der Button gedrückt wird (POST-Aktion). Sobald die Abfrage eingeleitet wurde, wird der Zählerstand erhöht, der neue Status ausgegeben, der "Dateizeiger" an den Anfang gesetzt, die neue Daten in die Datei geschrieben und zum Schluss die Datei geschlossen. Mit dem Befehl rewind kann man die Position des Dateizeigers ändern. Das heißt der Wert wird einfach überschrieben. Wenn wir dies nicht machen würden, würde die neue Zahl an die alte angehängt werden. Mit dem Befehl fwrite kann man nun die neue Daten schreiben lassen. Dazu sagen wir dem Skript erst einmal welche Datei (Handler) wir meinen und welche Daten geschrieben werden soll. Danach wird die Datei geschlossen, sodass kein neuer Wert mehr gespeichert wird (bis zum nächsten Aufruf der Seite). Hier das Praxisbeispiel:

if (isset($_POST['link'])) {
    $zaehlstatus++;
    echo "Neuer Status: ".$zaehlenstatus;
    rewind($dateizugriff);
    fwrite($dateizugriff, $zaehlstatus);
    fclose($dateizugriff);
}

Wenn wir nun alle einzelnen Codes zusammenführen, erhalten wir folgendes Skript:

$dateizugriff = fopen("linkcounter.txt","r+");
$zaehlstatus = fgets($dateizugriff, 100);
if($zaehlstatus == "") {
    $zaehlstatus = 0;
}
echo "Aktueller Status: ".$zaehlstatus;
 
echo "<br /><br />";
 
$seiteninhalt = "
<form action='datei1.php' method='POST'>
<input type='submit' name='link' value='Status erh&ouml;hen' />
</form>";
echo $seiteninhalt;
 
echo "<br /><br />";
 
if (isset($_POST['link'])) {
    $zaehlstatus++;
    echo "Neuer Status: ".$zaehlenstatus;
    rewind($dateizugriff);
    fwrite($dateizugriff, $zaehlstatus);
    fclose($dateizugriff);
}
Anzeigebeispiel
Anzeigebeispiel


Diese Methode wird z. B. auch für die Speicherung von Formular-Daten verwendet. Es ist dabei jedoch zu empfehlen die Daten in einer PHP-Datei und zwischen <?php /* und */ ?> speichern zu lassen, da der Inhalt dann "geschützt" ist, weil es sich um einen serverseitigen Kommentar handelt. Bei dem Linkcounterbeispiel ist dies jedoch egal.


Dateien vollständig auslesen

PHP beherrscht nicht nur den normalen Umgang mit Dateien sondern, es kann Dateien auch vollständig auslesen. Dazu benötigen wir eine Variabel. In dieser Variabel verwenden wir den Befehl file. Als Parameter für die Funktion file übergeben wir den Pfad. Bei der Variabel handelt es sich um eine array aus Strings. Jede Zeile ist ein Wert im Array. Die Auftrennung an den verschiedenen Linien erfolgt automatisch durch PHP.

$array = file("dateilesen.txt");

Der Inhalt dieses Arrays wird nun mit einer Schleife ausgegeben. Wir verwenden hier eine foreach-Schleife, da es die unaufwendigste ist.

foreach($array AS $ausgelesen) {
    echo $ausgelesen."<br />";
}

Das vollständige PHP-Skript sieht so aus:

$array = file("dateilesen.txt");
 
foreach($array AS $ausgelesen) {
    echo $ausgelesen."<br />";
}
Anzeigebeispiel
Anzeigebeispiel


Wer sich den Inhalt der Text-Datei mal anschauen möchte, der kann hier vorbeischauen.

Design:
 


Logo
Benjamin Jung
Krummstr. 9/3
73054 Eislingen

E-Mail: info@homepage-webhilfe.de
Webseite: www.homepage-webhilfe.de