![]() |
PHP:
|
|
| |
| E-Mail: | |
|---|---|
| Homepage-URL: |
Bei Fragen zu diesem Beitrag bitte den Autor des Beitrags kontaktieren!
Wenn Sie in Formularen sehr viele Checkboxen einsetzen wollen oder müssen, so stellen Sie fest, daß deren Auswertung oft ein mühseliges Unterfangen ist. Wenn Sie mit PHP arbeiten, kann die Auswertung von Checkboxen relativ stark vereinfacht werden.
Ein kurzes Fallbeispiel: Sie möchten ein Formular für eine KFZ-Bestellung erstellen. Das Formular enthält neben Texteingabeelementen und Listenfeldern auch viele Checkboxen für z.B. Zusatzausstattung. Hinter jeder Checkbox steht so etwas wie "Beifahrerairbag", "Nebelscheinwerfer", "Funkfernbedienung" u.v.m.
Nun wäre es sehr aufwändig, jeder Checkbox einen eigenen Namen zu geben und jede einzelne Box zu überprüfen. Sie können in PHP die Checkboxen zu einer sinnvollen Gruppe zusammenfassen und allen <input>-Feldern mit dem name-Attribut denselben Namen geben. Dazu müssen Sie an den Namen nur noch ein eckiges Klammernpaar anfügen ([]). Der HTML-Code für eine solche Checkbox könnte dann so aussehen: <input type="checkbox" name="ausstattung[]" value="Airbag">.
Wenn Sie ein Formular mit so benannten Checkboxen an ein PHP-Skript schicken, schreibt der PHP-Interpreter die Werte der gesetzten Checkboxen in ein Array vom selben Namen wie die Checkboxen. Die Werte können dann bequem weiterverarbeitet werden.
Das nachfolgende Beispiel zeigt, wie einfach es ist, beliebig viele Checkboxen auf diese Weise zu benutzen:
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <title>Checkboxen mit PHP auswerten</title>
5 </head>
6
7 <body>
8
9 <form action="checkbox.php">
10 <input type="hidden" name="sent" value="yes">
11 <input type="text" name="auto"><br>
12 <input type="checkbox" name="ausstattung[]" value="Sumpfgaseinspritzung"> Sumpfgaseinspritzung<br>
13 <input type="checkbox" name="ausstattung[]" value="drei Ersatzreifen"> drei Ersatzreifen<br>
14 <input type="checkbox" name="ausstattung[]" value="Schminkspiegel im Kofferraum"> Schminkspiegel im Kofferraum<br>
15 <input type="checkbox" name="ausstattung[]" value="Kniescheibenbelüftung"> Kniescheibenbelüftung<br>
16 <input type="checkbox" name="ausstattung[]" value="James-Bond Paket"> James-Bond Paket<br>
17 <input type="submit">
18 </form>
19
20 <?php
21 $sent = $_GET['sent']; //Weichensteller
22 $auto = $_GET['auto']; //Autoname
23 $ausstattung = $_GET['ausstattung']; //Inhalt der Checkboxen
24
25 if ($sent == 'yes') {
26 $ausstattung_text = implode(', ',$ausstattung);
27
28 echo '<h1>Ihr Wunschauto "'.$auto.'":</h1>';
29 echo '<p>Besondere Ausstattung:<br><br>'.$ausstattung_text.'</p>';
30 }
31 ?>
32
33 </body>
34 </html>
In den Zeilen 9 bis 18 wird ein normales HTML-Formular mit einem Textfeld (Zeile 11) und fünf Checkboxen (Zeilen 12 bis 16) definiert. Das versteckte Feld "sent" in Zeile 10 dient nur als "Weichensteller" für die spätere Formularauswertung. Beim ersten Aufruf der Datei wird ganz normal das Formular ausgegeben. Nach dem Absenden des Formulars ist $sent == 'yes' wahr und der Block zwischen Zeile 26 und 29 wird ausgeführt. Am wichtigsten ist hier die Zeile 26. In $austattung ist nämlich ein Array gespeichert, welches mit dem PHP-Befehl implode und einem Trennzeichen (hier ", ") zu einem String zusammengefügt wird. In den Zeilen 28 und 29 wird nur noch das Ergebnis als HTML ausgegeben.
In dem Beispiel wurde eine eindringliche Formularprüfung und die Codierung der Eingaben als HTML absichtlich weggelassen um es auf das wesentliche zu reduzieren. Das Beispiel ist auch online verfügbar unter der unten angegebenen Adresse.
Die folgenden Stellen werden empfohlen, um das obige Beispiel besser zu verstehen, oder um weitere Möglichkeiten und Details zu erfahren.