echo $begrüßung;
Ich hab halt alles in einem PHPDokument und muss schon mit diversen an Eingaben geknüpften IfKonstruktionen Kämpfen. Ich werde die verschiedenen Formularseiten in einzelne documente packen, so kann ich auch die Verlinkung besser handeln.
Ich stelle mir das eigentlich nicht so kompliziert vor.
switch (isset($_POST['seite']) ? $_POST['seite'] : '') { // kein POST => default-Zweig
case 1:
if (!formular_1_auswerten())
formular_1_anzeigen($_POST);
else
formular_2_anzeigen(array());
case 2:
if (!formular_2_auswerten())
formular_2_anzeigen($_POST);
else
formular_3_anzeigen(array());
...
case default:
formular_1_anzeigen(array());
}
formular_X_auswerten() erledigt die Prüfung und gibt false zurück, wenn Fehler auftraten. In dem Fall wird das Formular erneut angezeigt, und die bisherigen Eingaben als Vorbelegung gesetzt. Wenn alle Eingaben in Ordnung waren, geht es zum nächsten Formular. Das bekommt ein leeres Array und erhält damit keine Vorbelegungswerte.
Innerhalb von formular_X_anzeigen($values) könntest du Eingabefelder wie folgt erzeugen:
printf('<input type="text" name="foo" value=%s">',
htmlspecialchars(isset($values['foo']) ? $values['foo'] : ''));
Die zweite Zeile kannst du ja in eine eigenständige Funktion auslagern, dann ist der Tippaufwand nicht so groß. Ihr Funktionskopf könnte beispielsweise so aussehen:
function test($values, $key, $default = '')
Jedes Teil-Formular bekommt ein eindeutiges Hidden-Feld, das über $_POST['seite'] ausgewertet werden kann, damit switch weiß, wo es langzulaufen hat.
Das Problem bei einzelnen Seiten für jedes Formular ist, dass du von Formular 1 per action-Attribut zu Formular 2 kommst und da erst die Eingabeprüfung für 1 erledigen kannst. Und dann musst du irgendwie wieder zurück zu 1 und willst aber auch möglichst die bisherigen (fehlerhaften) Eingabewerte erhalten, um sie korrigieren zu lassen. Das ergibt ein Hin- und Hergehüpfe mit Daten im Gepäck. Oder du wertest die Eingaben mit Javascript aus und verhinderst so ein Voranschreiten zu 2, was aber die Mitarbeit von JS voraussetzt, und wegen Ausschaltbarkeit keine Garantie für fehlerfreie Werte ist.
echo "$verabschiedung $name";