Sven Rautenberg: Radio-Buttons -> dynamische Namensvergebung

Beitrag lesen

Moin!

$verfuegbarkeit = "name" . $i . "[]";
<input type="radio" name=',$verfuegbarkeit,' value="1">

Das erzeugt dir Namen im Stile von
name1[]
name2[]
name3[]...

Bei den normalen Arrays funktioniert dies mit:
echo "$HTTP_POST_VARS["xyz"][$i];

Aber leider nicht bei "$verfuegbarkeit".

Weil das kein Array ist, sondern du dir ganz viele Arrays (jeweils mit "name"+Zahl benannt) erzeugt hast, aber kein einheitliches.

Zuerst: Der Trick mit dem "[]", um ein Array zu erzeugen, funktioniert komplett: Wenn du in die Klammern einen Index, z.B. eine Zahl, reinschreibst, dann legt PHP dir statt "der nächste erreichbare Index des Arrays" ein Element mit dem angegebenen Index an.

name="name[23]" ist also ein erlaubter Name im Hinblick auf PHP, das würde zu $_POST['name'][23] führen - in Schleifen abfragbar mit foreach($_POST['name'] as $key => $value) - in $key stünde dann die 23 drin, in $value der Input-Value.

Und da HTML sich nicht um irgendwelche Sonderzeichen kümmern, kannst du anstelle eines billigen <input type=text name="name[23]" auch zwei Radiobuttons mit diesem Namen ausstatten, und im Value jeweils "ja" und "nein" oder sonstige passende Werte einfügen.

Schlau ist es dann allerdings, in deiner Datenbank noch eine Spalte "ID" anzulegen, und diese ID als Arrayindex ins HTML zu schreiben, anstelle einfach nur durchzunumerieren. Denn wenn du nur durchnumerierst, dann hängt die korrekte Zuordnung davon ab, dass sich diese Ordnung nicht ändert. Das kann aber nicht garantiert werden, denn Datensätze können ja durchaus zwischendurch neu dazukommen. Mit der ID kannst du jeden Radiobutton immer zum zugehörigen Datensatz zuordnen.

- Sven Rautenberg