Affenformular: Gültigkeitsprüfung bei Formularauswertung
Solange ungültige Eingabedaten vorliegen, ruft sich ein Formular selber wieder auf – das sogenannte Affenformular: Beispiel für Formularauswertung und Gültigkeitsprüfung um valide Eingabedaten durch den Nutzer zu erhalten.
Im Folgenden wird ein Reservierungssystem für z.B. Konzertkarten erstellt. Der Besucher kann seinen Namen hinterlassen und die gewünschte Anzahl an Karten. Vom Programm wird überprüft, ob sowohl Name wie auch Anzahl ausgefüllt wurde. Wird ein Feld (oder beide) vergessen, kommt beim betroffenen Feld ein Hinweis, dass hier die Eingabe fehlt. Dies wird über ein Affenformular gelöst – das Formular ruft sich selber auf, um die Eingaben zu überprüfen. Sind alle Eingaben in Ordnung, wird zum Auswertungsteil gegangen. Fehlen Eingaben, wird das Formular nochmals angezeigt, mit allen bisher gemachten Eingaben (damit der Nutzer nichts doppelt eingeben muss)!
Ablaufplan für Affenformular
Schauen Sie sich im ersten Schritt den Ablaufplan an, um die Logik vor sich zu haben. Zum einfachen nachvollziehen der einzelnen Programmschritte sind im Ablaufplan Nummern für die jeweiligen Schritte hinterlegt, die wieder im Quellcode zu finden sind.
Zum einfachen Nachvollziehen wurden einzelne Felder (z.B. das Formularfeld für den Nachnamen in 3 Schritte unterteilt – vergleiche Punkt 6 bis 8).
Quellcode für Affenformular-Beispiel Konzertkartenreservierung
Im Folgenden ist der komplette Beispielquellcode für das Karten-Reservierungssystem über ein Affenformular abgebildet. Ein Feedback an den Benutzer, wenn Eingaben leer gelassen werden, die notwendig sind, wird am Bildschirm anzeigt.
<?php
// Punkt 1: Abfrage Nachname und Anzahl ausgefüllt?
if ( $_GET['nachname'] == "" OR $_GET['anzahl'] == "" )
{
// Punkt 2: HTML-Tag für Formular
echo '<form action="reservierung.php" method="GET">';
// Formulareintragungen liegen (noch) nicht vor
// Punkt 3: Feld Nachname leer?
if ( $_GET['nachname'] == "" )
{
// Punkt 4: Formular bereits schon mal aufgerufen
if ( $_GET['schon_mal_abgesendet'] == "ja" )
{
// Punkt 5: Fehlermeldung - Feld Nachname ausfüllen
echo "<p>Hinweis: Bitte Feld Nachname ausfüllen</p>";
}
}
// Punkt 6: Feld "zeichnen" für Nachname
echo 'Nachname: ';
echo '<input type="text" name="nachname" value="';
// Punkt 7: ausgabe von eventueller Inhalt von Nachname
echo $_GET['nachname'];
// Punkt 8: Ende vom Formularfeld Nachname
echo '" size="20" maxlength="60">';
// Punkt 9: Test, ob Anzahl leer ist
if ( $_GET['anzahl'] == "" )
{
// Punkt 10: Formular bereits schon mal aufgerufen
if ( $_GET['schon_mal_abgesendet'] == "ja" )
{
// Punkt 11: Fehlermeldung - Feld Anzahl ausfüllen
echo "<p>Hinweis: Bitte Feld Anzahl ausfüllen</p>";
}
}
// Punkt 12: Formularfeld Anzahl zeichnen
echo '<p>Anzahl der gewünschten Reservierungen:';
echo '<input type="text" name="anzahl" value="';
// Punkt 13: eventuell vorhandene Werte in Vorgabe (value)
echo $_GET['anzahl'];
// Punkt 14: Abschluss des HTML-Tags
echo '" size="4" maxlength="4">';
// Punkt 15: Feld zur Kontrolle für Zweitaufruf
echo '<input type="hidden" name="schon_mal_abgesendet" value="ja">';
// Punkt 16: Submit-Button zum absenden der Eingaben
echo '<br>';
echo '<input type="Submit" name="" value="absenden">';
// Punkt 17: Ende vom Formular
echo '</form>';
echo "<p>Bitte alle Felder ausfüllen</p>";
exit;
}
else
{
// Punkt 18: alle Angaben liegen vor, nun Auswertung
echo "<p>Folgende Angaben wurden gemacht</p>";
echo "<p>Nachname :";
echo $_GET['nachname'];
echo "<p>Anzahl der Reservierungen";
echo $_GET['anzahl'];
// Beispiel: speichern in Datei, Speichern in Datenbank,
// E-Mail mit Inhalt versenden ...
}
?>
Aufgabe zur Erweiterung des Affenformulars: Erweitern Sie das Programm, damit überprüft wird, ob die Angabe der Anzahl der Karten auch eine Zahl ist. Es werden keine halben Plätze vergeben!
Wenn Sie einen Fehler finden, bitte mitteilen (egal ob Schreibfehler oder inhaltlicher Fehler).
Mit Maus fehlerhafte Stelle markieren und übernehmen mit folgendem Button: