Hallo,
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.
Das ist der Fall: Es wird über ein PHP Skript verarbeitet. Ist ein Formmailer eines hier verlinkten Services.
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.
Das ist anscheinend das Problem...
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.
In "reinem" HTML dann so:
<input type="checkbox" name="irgendwas[1]" value="eins">
<input type="checkbox" name="irgendwas[2]" value="zwei">
<input type="checkbox" name="irgendwas[3]" value="drei">
???
Marcel