Formularverarbeitung in einer einzigen PHP-Datei
In der vorherigen Lektion war unser Formular
auf einer Seite platziert
und wurde an eine andere gesendet.
Eigentlich ist das nicht notwendig. Wenn man das
Attribut action leer lässt oder es
komplett entfernt, wird das Formular an dieselbe
Seite gesendet.
So wird es funktionieren: Beim ersten Aufruf der Seite füllen wir das Formular mit Daten aus und klicken auf den Button. Danach wird die Seite aktualisiert und ihr Code erneut ausgeführt, aber diesmal mit den Formulardaten.
Sehen wir uns ein Beispiel an. Nehmen wir an, wir haben in einer Datei ein Formular und dessen Verarbeitung:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Beim ersten Aufruf der Seite gibt die Funktion var_dump
ein leeres Array aus. Nach dem Absenden des Formulars
gibt es bereits die Formulardaten aus. Das heißt, das erste
Mal ist $_GET leer, und das zweite Mal
- enthält es die Formulardaten.
Das kann zu Problemen führen. Nehmen wir an, zum Beispiel, wir geben Zahlen in das Formular ein und möchten die Summe dieser Zahlen auf dem Bildschirm ausgeben:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
In diesem Fall werden wir beim ersten Aufruf der Seite
PHP-Fehler sehen, die dadurch verursacht werden, dass
das Array $_GET leer ist, wir aber auf
seine Elemente zugreifen.
Hier sollte man sagen, dass bei Ihnen Fehler möglicherweise nicht im Browser erscheinen. In diesem Fall prüfen Sie, ob die Fehleranzeige für PHP aktiviert ist, und vergewissern Sie sich, dass es Ihr erster Aufruf der Seite ist und in der Adressleiste keine Formulardaten vorhanden sind.
Lassen Sie uns das Problem beheben. Dazu fügen wir eine Bedingung hinzu, in der wir prüfen, ob das Formular abgeschickt wurde.
Man kann zum Beispiel $_GET auf
Nicht-Leerheit prüfen. Wenn $_GET nicht leer ist -
dann wurde das Formular abgeschickt und die Summierung kann
durchgeführt werden. Andernfalls ist es noch
der erste Aufruf der Seite und die Summierung wird nicht
durchgeführt. Hier also der korrigierte Code:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Fragen Sie den Benutzer nach Nachname, Vorname und Vatersname. Geben Sie nach dem Absenden des Formulars die eingegebenen Daten auf dem Bildschirm aus.