Hauptmenü

Untermenü

PHP/MySQL - Praxistutorial 2 - Daten überprüfen Teil 2

1. Die Abschnitte

2. POST-Werte durchlaufen

Bisher haben wir in dieser Datei ja nichts anderes gemacht, als nach einer Übermittlung des Formulars einfach alle Einträge in die Datenbank zu semmeln. Jetzt wollen wir mal nachsehen, ob denn alle Pflichtfelder überhaupt ausgefüllt worden sind. Dazu bauen wir innerhalb der Bedingung if ($_POST) eine Schleife ein.


foreach ($input as $key => $value)
{
  ...
}

Erläuterung

Einige von euch werden sich jetzt sicher die folgende Frage stellen. Warum wühlt sich der Dödel denn jetzt durch das $input-Array? Ganz einfach. Die assoziativen Indizes sind identisch mit den Namen der Eingabefelder. So verhindert man, dass alle Formularelemente geprüft werden. Gut in unseren Fall ist das nur der Text des submit-Buttons. Aber was passiert bei zig hidden-Feldern? Die braucht man nicht zu validieren. Es sei denn, darin sind wichtige Werte enthalten. Aber das ist Teil dieses Tutorials.

3. Die Überprüfung

erfolgt nun innerhalb der Schleife. Dabei nutzen wir die Variable $key, die den jeweiligen assoziativen Wert des Array-Elements von $input enthält. Wer sich darunter nichts vorstellen kann, soll einfach mal in die Schleife ein echo key einbauen. Das $value brauchen wir hier nicht, da uns die leeren Werte eh nicht interessieren. Das müssen wir nur wegen der korrekten Syntax machen.

Wenn


if ((empty($_POST[$key]) || '???' == $_POST[$key]) 
    && isset($warning[$key]))
{
  ...
}

Erläuterung

Zunächst mal besteht die Bedingung aus zwei Hauptteilen. Da hätten wir zuerst (empty($_POST[$key]) || '???' == $_POST[$key]), das durch die äußeren Klammern zu einer Einheit gebündelt wurde, und dann && isset($warning[$key]). Im ersten Teil überprüfen wir, ob der Post-Wert des input-Feldes mit Namen $key leer ist (empty), oder ob da ein ??? drin steht. Was Letzteres angeht, dazu komme ich gleich. Dieser Ausdruck ist also wahr, wenn eine der beiden Bedingungen erfüllt ist.

Im zweiten Teil sehen wir dann nach, ob das Element mit dem assoziativen Index $key im Array $warning existiert. Das geschieht mittels isset($warning[$key]). Somit überprüfen wir nur unsere Pflichtfelder, weil diese Bedingung eigenständig ist und mit der ersten Teilbedingung durch ein logisches UND verknüpft worden ist.

Die gesamte Bedingung ist also dann wahr, wenn zuerst entweder das Pflichtfeld leer ist oder aus ??? besteht und dann auch noch der entsprechende Eintrag im Array $warning existiert.

Dann


$warning[$key] = $style;        
$input[$key]   = '???'$error         true;

Erläuterung

Dieser Code kommt natürlich in(!) die obige Bedingung. Also wenn die erfüllt ist, weisen wir zunächst unserem jeweiligen Array-Element $warning[$key] die CSS-Definition $style zu. Dann bekommt das fehlerhaft ausgefüllte Textfeld als value die drei Fragezeichen. Dabei müsst ihr nur an das value="<?php echo $input['doktor'];?>" denken. Und zu guter Letzt setzen wir die Variable $error auf true.

Sonst


else
{
  $input[$key]   = $_POST[$key]; 
}

Erläuterung

Also wo das hingehört, sage ich nicht mehr. Das solltet ihr eigentlich wissen. Ansonsten ist hier nur interessant, dass wir den jeweiligen Array-Indizes von $input den entsprechenden POST-Wert zuweisen. Und das benötigen wir wofür? Genau für value="<?php echo $input['doktor'];?>".

4. Das SQL-Statement

... muss jetzt nur in eine entsprechende Bedingung gepackt werden und alles ist feini, feini.


if (false === $error)
{
  $query '...';
  $result mysql_query ...;
}

Wenn also jetzt ein Vollpfosten ohne nachzudenken auf "Eingeben" klickt, so wird er sanft auf seine Fehler aufmerksam gemacht. Wer das hier nicht so ganz verstanden hat, sollte sich noch mal Stück für Stück durch den Code wühlen und ein wenig herumspielen.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt