Moin!
Verwende leistung[], dann bekommst Du ein Array
Hintergrund: Wenn die Checkboxen alle nur "leistung" heißen, legt PHP eine Variable $leistung an und speichert darin den Inhalt - sechsmal hintereinander. Du kriegst also nur den letzten Wert. Jaja, $leistung existiert nicht mehr, aber das Prinzip gibts noch. Der Wert landet in $_POST['leistung'] - was aber auch nur eine Stringvariable ist bzw. als solche angelegt wird.
In PHP kann man an ein Array Daten _hinten anhängen_, indem man auf $leistung[] zugreift. Wenn kein Eintrag existiert, wird $leistung[1] erzeugt, ansonsten ein Index mit einer um 1 größeren Nummer, als bisher existierte. Also wird auch das Formular sechsmal aufrufen: $leistung[] = "wert vom Value1...6" - und damit ein Array erzeugen. Natürlich stimmt das nicht ganz, denn der Wert landet in $_POST['leistung'][1..6].
Ansonsten, was spricht gegen eindeutige Namen?
Eben. Checkboxen dürfen alle unterschiedlich heißen, nur bei Radiobuttons ist ein eindeutiger Name für alle Buttons einer Gruppe nötig. Aber da kann man ja auch nur einen Wert auswählen.
gab's schon mal eine Diskussion, ob [] erlaubt ist, aber soweit ich mich erinnern kann, ja. Cheatah war mit von der Partie, weiß es ganz bestimmt noch.
Warum sollte es nicht erlaubt sein. Man kriegt mit Javascript Probleme, weil man nicht mehr einfach über den Namen auf das Form-Element zugreifen kann.
document.formname.leistung[].eigenschaft funktioniert nicht.
document.formname.elements["leistung[]"].eigenschaft funktioniert.
Zu bedenken ist, dass mehrere gleiche Elementnamen in Javascript automatisch ein Array erzeugen. Man kann also elements["leistung[]"].length abfragen, um die Elementzahl im Array zu erfahren, und mit elements["leistung[]"][index].eigenschaft die einzelnen Elemente ansprechen.
Da sind für meinen ästetischen Geschmack aber zu viele eckige Klammern auf einem Raum versammelt, das sieht ungesund aus. :)
- Sven Rautenberg
"Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)