Sven Rautenberg: Wie komm ich an den Namen eines Arrayfeldes?

Beitrag lesen

Moin!

Hallo,

warum nicht einfach so:

foreach ($_POST as $key => $value) {
  if (!$value) {
    echo "Bitte geben Sie einen $key ein<br>\n";
  }
}

Deine Lösung scheint verblüffend einfach. Allerdings hat sie Haken:

1. Der Vergleich if (!$value) ist böse[tm], denn wenn in $value etwas steht, was eingegeben wurde, aber dennoch zu "false" evaluiert, löst deine Fehlermeldung fälschlicherweise aus. Dort sollte mindestens etwas wie if (empty($value)) stehen.

2. Deine Lösung erfordert, dass die Formularfelder alle so heißen, wie ihre Beschriftung im Browser. Das verhindert, dass man die Namen der Formularfelder nach programmtechnischen Aspekten optimiert benennen kann. Außerdem kann man keine Umlaute einbauen (was ja durchaus erwünscht sein kann), und drittens: Was ist mit Checkboxen und select multiple?

3. Deine Lösung ignoriert, dass man gewisse Felder auf Ausgefülltheit prüfen will, andere Felder aber sogar auf EInhaltung gewisser Inhaltsforderungen wie z.B. "Nur Zahlen", "Gültiges Datum" etc. Es bietet sich daher an, für jedes Pflichtfeld eine entsprechende IF-Abfrage zu gestalten, die individuell gestaltet werden kann. Es ist programmtechnisch IMHO logischer, und auch für die Benutzerführung. Es hilft dem Benutzer nichts, wenn er beim ersten Abschickversuch gesagt bekommt, dass er ein Datum eingeben soll, beim zweiten Mal, dass er es im Format TTMMJJJJ anzugeben hat, und beim dritten Mal, dass es auch existieren muss. :)

- Sven Rautenberg