Rückgabewert gleichnamiger checkboxen
Todor
- php
Hallo,
ich bin mich beim Stöbern in der SelfHTML Beschreibung auf die checkboxen mit gleichen Namen gestoßen. Diese haben zwar einen unterschiedlichen Value aber was wird davon in PHP $_POST zurückgegeben? Eigentlich immer der Name (oder ID) mit dem Wert Value, doch was wenn mehrere Checkboxen an sind? Welchen Value nimmt dann die Post-Variable?
Kurz: Wie kann ich mit PHP gleichnamige Checkboxen abfragen?
Hallo Todor,
in diesem Fall kommt ein Array zurück.
Also prüfe mal die Ausgabe
<?php
print_r($_POST);
?>
echo $begrüßung;
ich bin mich beim Stöbern in der SelfHTML Beschreibung auf die checkboxen mit gleichen Namen gestoßen. Diese haben zwar einen unterschiedlichen Value aber was wird davon in PHP $_POST zurückgegeben? Eigentlich immer der Name (oder ID) mit dem Wert Value, doch was wenn mehrere Checkboxen an sind? Welchen Value nimmt dann die Post-Variable?
Gesendet werden alle aktivierten Checkboxen nacheinander. Ein Array, wie es $_POST darstellt kann aber pro Schlüssel nur einen Wert aufnehmen. Nachfolgende Scheibzugriffe auf den gleichen Schlüssel überschreiben den bisherigen Inhalt. Du bekommst also den Wert der letzten aktivierten Checkbox.
Es gibt eine Ausnahme: Wenn der Name der Checkbox(en) mit [] aufhört, erstellt PHP ein Array, dessen Elemente die Inhalte der value-Attribute der aktivierten Checkboxen sind.
Kurz: Wie kann ich mit PHP gleichnamige Checkboxen abfragen?
Werte die "raw POST data", was aber eine umständliche Methode ist.
Benamse deine Checkboxen mit [] am Ende: <input type="checkbox" name="irgendwas[]" ...>
echo "$verabschiedung $name";
@reply dedlfix
Danke für die Antwort! Dies ist echt tricky aber hört sich umständlich an. Bisher hab ich mich entschieden die Checkboxen einfach nicht gleichnamig zu machen (also wie id), denn scheinbar haben die PHP-Entwickler da nix entsprechendes vorgesehen für die Gruppierung.
thX
Todor
echo $begrüßung;
[...] denn scheinbar haben die PHP-Entwickler da nix entsprechendes vorgesehen für die Gruppierung.
Doch doch, die Sache mit den [] ist für die meisten Fällen diejenige der Wahl:
<input type="checkbox" name="gleichername[]" value="foo">
<input type="checkbox" name="gleichername[]" value="bar">
ergibt, wenn beide angehakt sind,
$_POST['gleichername'] = array('foo', 'bar');
Das gleiche Prinzip wirkt bei <select> mit Mehrfachauswahl:
<select size="5" multiple="multiple" name="einname[]">
<option value="foo">foo
<option value="bar">bar
</select>
ergibt, wenn beide angehakt sind,
$_POST['einname'] = array('foo', 'bar');
echo "$verabschiedung $name";