In diesem kleinen PHP-Tutorial, versuche ich Ihnen zu erklären, wie man Formulardaten mit PHP in einer CSV-Datei speichert. Dies kann unter anderem nützlich sein, wenn Sie ein Quiz oder andere Formulardaten per E-Mail nicht zugestellt haben und die zu einem späteren Zeitpunkt auswerten möchte. Nachfolgend finden sie das entsprechende Beispiel Script.
Beispiel:
<?php
/*
* Created on 31.10.2010 by Nico Schubert
*/
/**
* Datei Name, wo die Daten gespeichert werden
sollen
*/
$dateiname = 'daten.csv';
/**
* Prüfen ob die Variable ein Wert zugewiesen
wurde. Ansonsten werden diese Variablen
deklariert.
*/
if (!isset($_POST['vorname'])) $_POST['vorname'] =
'';
if (!isset($_POST['nachname'])) $_POST['nachname']
= '';
if (!isset($_POST['email'])) $_POST['email'] = '';
if (!isset($_POST['senden'])) $_POST['senden'] =
'';
$meldung = '';
/**
* Prüfen der Variable $_POST['senden'] ob diese
ein Wert hat.
*/
if ($_POST['senden'] == 'speichern') {
/**
* Zeile aufbauen, die in die CSV-Datei am Ende
geschrieben werden soll
*/
$inhalt =
$_POST['vorname'].';'.$_POST['nachname'].'
;'.$_POST['email']."
";
/**
* Datei öffnen und den Dateizeiger auf das
Ende der CSV Datei legen, wenn die Datei
noch nicht vorhanden ist wird versucht
diese anzulegen. Wichtig ist, dass die
Skriptdatei die Rechte zum anlegen einer
Datei hat.
*/
$handle = @fopen($dateiname, "ab+");
/**
* Schreiben der Zeile, in der CSV Datei
*/
fwrite($handle, $inhalt);
/**
* Datei wieder schließen
*/
fclose ($handle);
/**
* Prüfen ob die CSV Datei existiert
*/
if (file_exists($dateiname) == true) {
/**
* Die schreib Rechte ändern bei der CSV
Datei, damit das nächste mal diese
beschrieben werden kann.
*/
@chmod ($dateiname, 0757);
}
/**
* Ausgabemeldung erstellen
*/
$meldung = '<font color="green">Daten wurden
gespeichert!</font>';
}
/**
* Prüfen ob eine Ausgabemeldung in der Variable
$meldung hinterlegt wurde, wenn eine
Ausgabemeldung vorhanden ist wird diese per
Echo ausgegeben.
*/
if ($meldung != '') echo $meldung;
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"
method="post">
<table>
<tr>
<td>Vorname:</td>
<td><input type="text" name="vorname" value=""/></td>
</tr>
<tr>
<td>Namename:</td>
<td><input type="text" name="nachname" value=""/></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="email" value=""/></td>
</tr>
</table>
<input type="submit" name="senden" value="speichern"/>
</form>
Ausgabe des Formulars würde so aussehen:
Dieser PHP Code erstellt ein Formular, bei dem die Nutzer Informationen über sich eingeben können und diese anschließend in einer CSV-Datei speichern lassen können.
Erklärung:
Zunächst wird auf Zeile 2 die Variable $dateiname deklariert, in der der Name der Datei gespeichert wird, in welcher die Daten gespeichert werden sollen. In Zeile 4 bis 7 werden verschiedene Variablen deklariert, falls diese keinen Wert zugewiesen bekommen haben. Danach folgt auf Zeile 10 die Variable $meldung mit dem Wert '' deklariert.
Anschließend folgt auf Zeile 13 eine Prüfung mittels eines if-Statements, ob die Variable $_POST['senden'] den Wert ‚speichern‘ hat. Falls ja, wird ab Zeile 16 eine neue Variable namens $inhalt mit den über das Formular übergeben Daten erstellt. Diese dann mittels des Semikolons getrennt alles in dem entsprechenden Format angeordnet und danach am Ende jeder Zeile noch mit „n“ (new line) abschließend versehen.
Auf Zeile 22 folgt dann der Befehl, mit welchem die Datei geöffnet und gegebenenfalls angelegt wird und ab Zeile 24 schließlich noch das Schreiben des Inhalts (Zeilenumbrüche inkludiert) in die zuvor angelegte/geöffnete Datei. Anschließend folgt auf Zeile 26 noch das Schließen der Datei und ab Zeile 28 die Prüfung mit file_exists(), ob die CSV-Datei existiert (falls ja). Sollte dies der Fall sein, so ändern sich abhängig von den Rechten des Servers unter Umständen noch mal bestimmte Recht für die CSV-Datei (Zeile 31). Danach erfolgt auf 33 nochmals eine Erstellung der Ausgabemeldung für den Nutzer, um ihm mitzuteilen, dass die Daten erfolgreich gespeichert wurden.
Abschließend folgt auf Zeile 37 nochmals ein if-Statement, welches prüft, ob eine Ausgabemeldung ($meldung) vorhanden ist und diese im Falle einer Ausgabemeldung mittels Echo ausgibt.
Danach folgt ab Zeile 45 dann noch der Code für das Formular, in dem der Nutzer seine Daten eingeben kann.
Empfehlenswert wäre, zusätzlich die Felder zu überprüfen, bevor diese in der Textdatei gespeichert werden. Da sonst es sich ergeben kann, dass leere Daten im Formular eingegeben und diese Felder auch mit keinem Inhalt gespeichert werden. Ich denke, dass dies nicht gewollt ist.
Daher sollten Sie sich bei Problemen mit einer Überprüfung unsere Anleitung zu IF Anweisungen durchlesen. Die Überprüfung habe ich mit Absicht nicht eingebaut, da ich ausschließlich erklären möchte, wie man Formulardaten in einer CSV-Datei speichert.
Wichtig ist hierbei, dass das PHP-Script schreib Rechte (sogenannte CHMOD Rechte) hat, da andernfalls keine CSV-Datei auf den Server geschrieben werden kann. Gegebenenfalls können sie die Datei auch ohne Inhalt auf den Server übertragen, dann müssen sie aber dieser Datei entsprechende Schreibrechte geben. Dies ist aber nur erforderlich, wenn Sie und ein Linux System arbeiten. Bei einem Windows Server ist das Setzen von Schreibrechten nicht erforderlich.
Ich habe dieses Tutorial aufgrund einer Frage, in unserem Supportforum zur Erklärung erstellt. Sollten sie auch eine Frage haben, so nutzen sie unser Supportforum.