Hallo allerseits!
Ich hatte schonmal ein Thema gestartet, das wurde aber leider gelöscht (wieso eigentlich?). Deswegen nochmal von vorn.
Ich versuch ein Formular zu basteln mit welchem Einträge in eine Datenbank geschrieben werden können. Bei falschen Angaben, soll das Formular erneut angezeigt werden mit entsprechenden Fehlermeldungen. Unter dem Formular sollen in jedem Fall (egal ob Formular bereits ausgefüllt oder nicht) die bereits eingegebenen Daten aus der Datenbank ausgelesen und angezeigt werden.
Rein funktional hatte ich das ganze eigentlich schon im letzten Thread geschafft, aber musste damals erfahren, dass mein Script weit davon entfernt war sauber programmiert zu sein. Deshalb mein neuer Versuch indem ich statt einer reiner Prozesssicht versucht habe das ganze in Module aufzuteilen und am Ende mit einem simplen Prozess auszuführen/anzuzeigen.
Ich habs mir etwa so vorgestellt:
Modul 1: Überprüfung ob bereits Daten abgesendet wurden
Modul 2: Das Formular an sich
Modul 3: Datenbankverbindung
Modul 4: Überprüfung der Eingaben
Modul 5: Datenbankeintrag
Modul 6: Datenbankabfrage und -ausgabe
Bisher hab ich das folgende Formular welches dann in die Index-Datei included werden soll:
<form action="<?php htmlspecialchars($_SERVER['PHP_SELF'])?>" method="post">
<fieldset>
<ul>
<li class="first">Event hinzufügen</li>
<?php if (isset($form_error[Input])){echo '<li class="error">'.$form_error[Input].'</li>';}?>
<?php if (isset($form_error[Datum])){echo '<li class="error">'.$form_error[Datum].'</li>';}?>
<li><label for="Datum">Datum:</label><input type="text" name="Datum" id="<?php if (isset($form_error[Datum])){echo 'fehler';} ?>" class="text" /></li>
<?php if (isset($form_error[Zeit])){echo '<li class="error">'.$form_error[Zeit].'</li>';}?>
<li><label for="Zeit">Zeit:</label><input type="text" name="Zeit" id="Zeit<?php if (isset($form_error[Zeit])){echo 'fehler';} ?>" class="text" /></li>
<?php if (isset($form_error[Ort])){echo '<li class="error">'.$form_error[Ort].'</li>';}?>
<li><label for="Ort">Ort:</label><input type="text" name="Ort" id="Ort<?php if (isset($form_error[Ort])){echo 'fehler';} ?>" class="text" /></li>
<?php if (isset($form_error[Adresse])){echo '<li class="error">'.$form_error[Adresse].'</li>';}?>
<li><label for="Adresse">Adresse:</label><input type="text" name="Adresse" id="Adresse<?php if (isset($form_error[Adresse])){echo 'fehler';} ?>" class="text" /></li>
<li class="last"><input type="submit" value="Hinzufügen" class="submit" /></li>
</ul>
</fieldset>
</form>
Das Array form_error() ist so gedacht, dass in Modul 4 (Überprüfung der Eingaben) jeweils der entsprechende Wert mit einem String gefüttert werden soll. Z.B. bei der Eingabe von Buchstaben im Datumsfeld --> $form_error[Datum} = "Bitte gültiges Datum eingeben".
Soweit sogut. Nun hab ich aber bereits wieder ein Problem wenns darum geht die Eingaben zu überprüfen.
Wenn ich also nun folgendes prüfe:
if (isset ($_POST["Datum"], $_POST["Zeit"], $_POST["Ort"], $_POST["Adresse"])) {
if (empty ($_POST["Datum"])) {
$form_error[Input] = "Bitte alle Felder ausfüllen";
}
}
..und es ist nichts eingegeben, dann wird zwar der Fehler angezeigt, aber der Rest wird trotzdem fortgesetzt inklusive Datenbankeintrag. Und wenn ich mit "die" Arbeiten würde, würde der Rest garnicht nicht mehr ausgeführt werden (also auch die restliche anzeige der Fehler, was ich auch nicht wirklich möchte.
Ich steh grad irgendwie voll planlos da. Kann mir jemand einen Schubs in die richtige Richtung geben?
Besten Dank im Voraus.
php-loser
PS: bitte nicht diesen Thread auch wieder löschen.. ist ziemlich anstrengend alles wieder von vorne zu erzählen.