echo $begrüßung;
Ok, keine Chance ich verstehs überhaupt nicht. [...] und mit euren (für mich als totale Niete) bereits relativ komplexen Antworten, kann ich leider nichts anfangen.
Bitte beschreibe möglichst genau, wo deine Verständnisprobleme im einzelnen liegen. Bei einem allgmeinen "Ich versteh nix" müsste eine Antwort ebenso umfangreich wie ein Tutorial ausfallen, auf die Gefahr hin, dass du wieder "nix verstehst". Dazu hat verständlicherweise keiner große Lust.
Ich teil das ganze mal in für mich logische Entwicklungs-Schritte auf:
Deine Aufteilung ist die Reihenfolge, wie es sich im wesentlichen für einen Anwender darstellt. Für das Script ist eine andere Reihenfolge besser. Jeder Request steht für sich allein. Es gibt für einen Webserver kein Vorher und kein Nachher.
Dein Script wird also aufgerufen. Dabei kann es sich um einen "normalen" Aufruf per Link oder Adresszeileneingabe oder aber um einen durch ein ausgefülltes Formular ausgelösten handeln. Du prüfst zuerst, ob Formulardaten vorhanden sind. Wenn ja, prüfst du diese und ermittelst die vom User gemachten inhaltlichen Fehler. Gibt es keine, gibst du ein leeres Formular aus ansonsten Fehlermeldungen und das Formular zusammen mit bisher eingegebenen Werten.
// Variaben immer initialisieren! $errors dient als Sammelstelle für die bei der Prüfung der Eingabewerte anfallenden Fehlermeldungen.
$errors = array();
if (!empty($_POST)) { // $_POST ist nicht leer, also wurde das Formular abgesendet
// Prüfen der Eingabewerte.
// Die nächsten beiden Zeilen dienen dafür, $_POST['feld1'] bei Nicht-Vorhandensein definitiv zu erzeugen, ansonsten ergeben die weiteren Lesezugriffe darauf E_NOTICE-Meldungen bei aus E_ALL stehendem error_reporting.
if (!isset($_POST['feld1']))
$_POST['feld1'] = '';
// weitere Prüfungen für $_POST['feld1']
// bei einem Fehler: $errors[] = 'Fehlermeldungstext';
// Beispiel:
if (empty($_POST['feld1']))
$errors[] = 'Feld 1 darf nicht leer sein.';
// Prüfungen der anderen Werte nach dem gleichen Prinzip wie für feld1
}
// das Formular war nicht abgeschickt oder es war zwar, enthielt aber Fehler
if (empty($_POST) or !empty($errors)) {
// zunächst die Fehlermeldungen ausgeben
if (!empty($errors)) {
echo '<ul class="errors">';
foreach ($errors as $error) {
echo '<li>', htmlspecialchars($error), '</li>';
}
echo '</ul>';
}
// nun das Formular
// %s sind Platzhalter. An ihrer Stelle werden die als zweiter bis n-ter Parameter von printf() notierten Werte eingefügt.
printf('
<form ...>
<label for="id_feld1">Feld 1: </label><input type=... name="feld1" id="id_feld1" value="%s">
<label for="id_feld2">Feld 2: </label><input type=... name="feld2" id="id_feld2" value="%s">
</form>',
htmlspecialchars($_POST['feld1']),
htmlspecialchars($_POST['feld2']));
}
else { // Formular war ausgefüllt und das noch dazu fehlerfrei.
// Datenbankhandling
// Alle Werte, vor allem die in $_POST, immer mit mysql_real_escape_string() behandeln, bevor sie in ein MySQL-Statement eingefügt werden und auch mit Anführungszeichen einrahmen. Zahlenwerte können ohne Anführungszeichen eingefügt werden, wenn du sicherstellst, dass sie Zahlen und nichts weiter sind, beispielsweise mit intval($wert). Ansonsten stört es auch nicht, wenn eine Zahl in Anführungszeichen notiert und mit mysql_real_escape_string() behandelt wurde.
}
Anschließend kommt
- Die Ausgabe der Datensätze als Tabelle unter dem Formular
Wenn du das nur unter bestimmten Bedingungen ausgeben willst, notierst du den Code zu 5. in einem entsprechenden if-Statement.
echo "$verabschiedung $name";