In diesem Abschnitt wollen wir einige der Formularelemente genauer betrachten.
Verarbeitung von Checkboxen/Kontrollkästchen
Wenn die Checkboxen nicht markiert sind, werden sie überhaupt nicht übermittelt. Andernfalls haben sie den im Attribut value angegebenen Wert. Man kann die Elemente auf die folgenden beiden Arten erzeugen:
# Fall 1: Verschiedene Namen, gleicher Wert
<input type="checkbox" name="cb[1]" value="yes" />
<input type="checkbox" name="cb[2]" value="yes" />
# Fall 2: "Gleiche" Namen, verschiedene Werte
<input type="checkbox" name="cb[]" value="1" />
<input type="checkbox" name="cb[]" value="2" />
Die Abfrage erfolgt in beiden Fällen mit:
if (isset($_REQUEST['cb'])) {
reset($_REQUEST['cb']);
foreach ($_REQUEST['cb'] as $key=>$element) {
echo "$key: $element<br>";
}
} else {
echo "Keine Checkboxen<br>";
}
Im Fall 1 wertet man die Variable $key aus, im Fall 2 die Variable $element. Entscheidend ist auch hier, dass der Variablenname bei mehr als einer Checkbox mit [] endet, damit in PHP ein Array zur Verfügung steht.
Verarbeitung von Radiobuttons/Optionsschaltern
Radiobuttons verhalten sich analog zu Checkboxen, mit der Ausnahme, dass hier eine Mehrfachauswahl nicht möglich ist. Beim Erstellen des HTML-Codes sollte darauf geachtet werden, dass zusammengehörige Buttons den gleichen Namen haben müssen.
<?php
$farben = array(
array('name' => 'grün', 'value' => 'g'),
array('name' => 'blau', 'value' => 'b'),
array('name' => 'rot', 'value' => 'r')
);
foreach ($farben as $element) {
echo
printf('<input type="radio" name="farbe" value="%s" %s/> %s<br />',
$element['value'],
(isset($_REQUEST['farbe']) and $_REQUEST['farbe'] == $element['value']) ? 'checked="checked" ' : '',
$element['name']
);
}
?>
Verarbeitung von Submit
Um die Aktivierung einer Submit-Schaltfläche zu überprüfen, muss diese über einen Namen verfügen.
<input type="submit" name="submit" value="Senden">
Anschließend ist bei einem Mausklick oder einem Tastendruck auf die Submit-Schaltfläche eine Variable mit dem Namen der Schaltfläche vorhanden:
if (isset($_REQUEST['submit'])) { ... }
Soll es um die Verarbeitung von mehr als einer Submit-Schalfläche gehen, stehen Ihnen mehrere Optionen zur Verfügung:
- Haben die Schaltflächen den gleichen Namen, kann man den value auswerten; die PHP-Variable heißt so wie die Schaltfläche ($_REQUEST['submit']).
- Haben die Schaltflächen unterschiedliche Namen, erhält man je nach betätigter Schaltfläche eine Variable mit anderem Namen registriert; mit isset() kann man prüfen, ob eine bestimmte Variable vorhanden ist, d. h., ob eine bestimmte Schaltfläche angeklickt wurde.
- Benennt man die Schaltflächen in der Array-Schreibweise, z. B. name="submit[0]", wobei zwischen den eckigen Klammern eindeutige Werte stehen müssen, erhält man in PHP ein Array mit genau einem Element; der Schlüssel (Key) dieses Elements ist die aktivierte Schaltfläche.
Verarbeitung von Reset
Zunächst sollte man überlegen, ob man überhaupt einen Reset-Schalter benötigt. Bei einer HTML-Reset-Schaltfläche setzt der Browser alle Eingabefelder auf den Anfangszustand zurück; da damit kein Request an den Server verbunden ist, kriegt PHP davon nichts mit. Möchte man einen Button realisieren, der Eingabeelemente mit vordefinierten Inhalten wirklich löscht, muss man eine Submit-Schaltfläche verwenden:
<?php
if (isset($_REQUEST['loeschen'])) {
unset($_REQUEST['eingabe']);
}
?>
<form method="post" action="<?php echo $PHP_SELF ?>" >
<input type="text" name="eingabe" value="<?php @print $_REQUEST['eingabe']; ?>">
<input type="submit" name="submit" value="Absenden">
<input type="reset" value="Reset">
<input type="submit" name="loeschen" value="Löschen">
</form>
|