Hallo,
Wenn man mehrere Checkboxen nutzt, die alle das selbe name Attribut haben, wird stets die letzte Auswahl abgeschickt.
nein, sie werden alle verschickt (jedenfalls alle, die markiert sind).
Wenn sie aber durch ein PHP-Script über $_GET[] oder $_POST[] ausgewertet werden, ist tatsächlich nur noch der letzte Eintrag verfügbar. Warum? Weil die vorhergehenden überschrieben werden.
Beispiel: Gegeben seien drei aktivierte Checkboxen.
<input type="checkbox" name="auswahl" value="eins">
<input type="checkbox" name="auswahl" value="zwei">
<input type="checkbox" name="auswahl" value="drei">
Beim Absenden des zugehörigen Formulars entsteht folgende Reihe von URL-Parametern:
?auswahl=eins&auswahl=zwei&auswahl=drei
Beim Befüllen des $_GET-Arrays geht PHP so vor, als stünden da einzelne Zuweisungen am Scriptanfang:
$_GET['auswahl'] = 'eins';
$_GET['auswahl'] = 'zwei';
$_GET['auswahl'] = 'drei';
Es ist offensichtlich, dass die ersten beiden Werte dabei verlorengehen. Allerdings kann ein Script durchaus auf den ungeparsten Original-Query zugreifen, der mit $_SERVER['QUERY_STRING'] zur Verfügung steht. Dann muss man die Parameter einzeln aufdröseln - das ist meistens unnötig, aber möglich.
Deswegen wird ja auch empfohlen, das name-Attribut mit einer eckigen Klammer als Bestandteil des Namens zu notieren. Dann sieht die PHP-interne Initialisierung nämlich so aus:
$_GET['auswahl'][] = 'eins';
$_GET['auswahl'][] = 'zwei';
$_GET['auswahl'][] = 'drei';
Hier wird in $_GET['auswahl'] also wiederum ein Array angelegt, das die Werte 'eins', 'zwei' und 'drei' enthält.
Du sollst ja auch nicht mit den name Attributen den abzuschickenden Wert bestimmen sondern mit value.
Schon richtig, der Hinweis passt aber nicht zum Problem. ;-)
Schönen Sonntag noch,
Martin
Die letzten Worte des Architekten:
Mir fällt da gerade was ein...