Sie möchten Nutzern die Möglichkeit geben, mehrere Optionen in Ihrem Formular auszuwählen? Checkboxes bieten sich dafür optimal an, weil sie – im Gegensatz zu Radio-Buttons – mehrere gleichzeitige Eingaben zulassen. In diesem Artikel erfahren Sie detailliert, wie Sie Checkboxen in Ihrem Formular einbinden, deren Werte in einem Array sammeln und schließlich mithilfe von PHP auswerten können.
Inhaltsverzeichnis
Was sind Checkboxes?
Checkboxes sind kleine, quadratische Felder in HTML-Formularen, die Sie unabhängig voneinander auswählen können. Sie erlauben eine flexible Mehrfachauswahl und eignen sich insbesondere für Listen von Themen, Eigenschaften oder Kenntnissen. Jede Checkbox kann einen eindeutigen Wert tragen, welcher nach dem Abschicken des Formulars an das Server-Skript übermittelt wird.
Praxisbeispiel: Programmiersprachen abfragen
Stellen Sie sich vor, Sie möchten über ein Formular die Programmiersprachen ermitteln, die Ihre Besucher beherrschen. Bei vielen möglichen Einträgen ist eine einfache Einzelauswahl ungeeignet, weshalb sich Checkboxes ideal anbieten. So kann jemand sowohl PHP als auch Java und MySQL gleichzeitig auswählen.

Im gezeigten Formular können Sie erkennen, dass jede Checkbox den Attributnamen programmiersprachen[]
trägt. Durch das []
-Symbol werden mehrere Checkbox-Werte automatisch als Array übergeben.
Quellcode-Beispiel
Der folgende Code zeigt Ihnen, wie Sie die Daten im PHP-Skript empfangen, überprüfen und ausgeben können. Sie werden feststellen, dass es nur wenige Codezeilen benötigt, um alle gewünschten Checkbox-Werte zu sammeln.
<?php
if (!isset($_POST['senden'])) {
$_POST['senden'] = '';
}
$ausgabe = '';
if ($_POST['senden'] == 1) {
if (is_array($_POST['programmiersprachen'])) {
$i = 0;
foreach ($_POST['programmiersprachen'] as $sprache) {
if ($i === 0) {
$ausgabe .= $sprache;
} else {
$ausgabe .= ', ' . $sprache;
}
$i++;
}
if ($ausgabe !== '') {
echo '<p>Es wurden folgende Programmiersprachen
angegeben:</p>';
echo '<p>' . htmlspecialchars($ausgabe) . '</p>';
echo '<p><a
href="'.htmlspecialchars($_SERVER["PHP_SELF"]).'">Noch
mal versuchen</a></p>';
}
} else {
echo '<p>Es wurde keine Programmiersprache
angegeben!</p>';
echo '<p><a
href="'.htmlspecialchars($_SERVER["PHP_SELF"]).'">Noch
mal versuchen</a></p>';
}
} else {
?>
<form action="<?php echo
htmlspecialchars($_SERVER["PHP_SELF"]); ?>"
method="post">
<input type="hidden" name="senden" value="1" />
<p>Welche Programmiersprachen kennen Sie?</p>
<p>
<input name="programmiersprachen[]" type="checkbox"
value="PHP" /> PHP
<input name="programmiersprachen[]" type="checkbox"
value="MySQL" /> MySQL
<input name="programmiersprachen[]" type="checkbox"
value="Java" /> Java
<input name="programmiersprachen[]" type="checkbox"
value="JavaScript" /> JavaScript
</p>
<p><input type="submit" value="Absenden" /></p>
</form>
<?php
}
?>

Im obigen Screenshot sehen Sie eine mögliche Ausgabesituation, wenn Sie PHP und MySQL angehakt und das Formular abgeschickt haben.
So funktioniert das Skript
Damit Sie die einzelnen Schritte des Scripts besser nachvollziehen können, ist es sinnvoll, dessen Struktur zu verstehen. Dadurch wissen Sie genau, wo und wie die Checkbox-Eingaben verarbeitet werden.
- Vorabprüfung der Variablen: Mit
isset()
wird überprüft, ob das Formular überhaupt schon abgesendet wurde. Falls nicht, werden Standardwerte gesetzt, um Fehlermeldungen zu verhindern.
- Formularauswertung: Wird
$_POST['senden']
auf 1
geprüft, so wissen Sie, dass ein Absenden stattgefunden hat. Anschließend wird $_POST['programmiersprachen']
kontrolliert, um zu sehen, ob die Eingabe als Array vorliegt.
- Ausgabe der Programmiersprachen: Mit einer
foreach()
-Schleife iteriert das Skript durch alle ausgewählten Checkbox-Werte. Diese werden in der Variable $ausgabe
gesammelt und sicher per htmlspecialchars()
ausgegeben.
- Fehlerbehandlung: Sollten keine Checkboxes angeklickt worden sein, erscheint eine Meldung, dass keine Programmiersprache angegeben wurde.
Weiterführende Hinweise
Um tiefer in die Materie einzusteigen, können Sie die folgenden Themen genauer untersuchen. Sie vertiefen nicht nur das Verständnis von Arrays und PHP-Strukturen, sondern helfen auch dabei, ausgefeilte Formulare zu entwickeln.
- Arrays: Erfahren Sie, wie Arrays aufgebaut sind und warum sie so vielseitig einsetzbar sind.
- foreach()-Schleife: Perfekt für das Durchlaufen von Arrays und eine besonders lesbare Syntax.
- for()-Schleife: Nützlich für indexbasierte Vorgänge, wenn Sie gezielt über bestimmte Indizes iterieren möchten.
- if-Anweisung: Grundlegend, um verschiedene Bedingungen im Code abzufragen und darauf zu reagieren.
- isset(): Prüft die Existenz von Variablen, bevor Sie sie auswerten und verarbeiten.
- is_array(): Unverzichtbar, wenn Sie wissen möchten, ob eine Variable ein Array ist.
Erweiterte Tipps zur Checkbox-Auswertung mit PHP
Nachdem Sie das Grundprinzip verstanden haben, können Sie Ihr Formular noch weiter optimieren und an komplexere Anforderungen anpassen. Hier finden Sie ein paar Ideen, die Ihnen helfen, Ihre Checkbox-Abfragen noch vielseitiger zu gestalten.
- Dynamische Generierung: Wenn Sie Checkboxes aus einer Datenbank abrufen, lassen sich Änderungen an der verfügbaren Auswahl vornehmen, ohne dass Sie Ihren PHP-Code jedes Mal aktualisieren müssen.
- Verwendung von
implode()
: Statt die Werte manuell in einer Schleife zusammenzufügen, können Sie das Array mit implode()
zu einer Zeichenkette umwandeln (z.B. implode(", ", $_POST['programmiersprachen'])
) und direkt ausgeben.
- Vorauswahl der Checkboxen: Um bestimmte Felder von Anfang an anzuhaken, setzen Sie das HTML-Attribut
checked
. Achten Sie jedoch darauf, den Nutzer nicht ungewollt zu einer bestimmten Eingabe zu drängen.
- Sicherheit und Validierung: Achten Sie im Umgang mit Benutzereingaben auf Datensicherheit. Funktionen wie
htmlspecialchars()
oder filter_input()
helfen, um Cross-Site-Scripting (XSS) zu verhindern.
- Barrierefreiheit: Ergänzen Sie aussagekräftige Labels und nutzen Sie, falls möglich, WAI-ARIA-Attribute. So machen Sie Ihr Formular zugänglicher für Screenreader und Nutzer mit Einschränkungen.