$_POST & Checkboxen
dude
- php
0 Cheatah0 Thomas Luethi0 lulu0 Thomas Luethi0 lulu
0 Sven Rautenberg0 lulu0 Sven Rautenberg0 lulu
0 Andavos
hallo, habe bei $_POST das problem das die bezeichnung der checkboxen (in einem formular) nicht übermittelt wird wenn diese nicht aktiviert wurden !
gibt es dafür ne erklärung bzw. lösung ???
bei anderen variablen wie: $HTTP_POST_VARS oder $_REQUEST funzt es auch nicht.
Hi,
hallo, habe bei $_POST das problem das die bezeichnung der checkboxen (in einem formular) nicht übermittelt wird wenn diese nicht aktiviert wurden !
nein. Du hast das Problem, dass Du deren Namen erwartest.
gibt es dafür ne erklärung bzw. lösung ???
Erwarte sie nicht. Das Verhalten ist exakt so definiert, wie Du es erlebst. Alles andere wäre ein gigantisches Problem.
Cheatah
ich sehe das etwas anders...denn so wie es ist ist es ein gigantisches problem. dynamisches auslesen kann so zum problem werden.
input felder (ohne werte) bzw. deren bezeichnungen werden schließlich auch angezeigt.
trifft das eigentlich nur auf checkboxen oder auch auf andere formular feld typen z.b. radio zu.
Hi,
ich sehe das etwas anders...
das ist allen anderen, die sich seit einem Jahrzehnt auf exakt dieses Verhalten verlassen, herzlich egal - also allen Nutzern von HTML und HTTP.
denn so wie es ist ist es ein gigantisches problem. dynamisches auslesen kann so zum problem werden.
Du hast einen Konzeptfehler, das ist alles.
input felder (ohne werte) bzw. deren bezeichnungen werden schließlich auch angezeigt.
Bei denen ist dieses Verhalten definiert.
trifft das eigentlich nur auf checkboxen oder auch auf andere formular feld typen z.b. radio zu.
Es wird nur der ausgewählte Radiobutton versendet, nur der genutzte Submit-Button, nur die im <select> ausgewählte Option. Eben immer, wenn es einen Unterschied macht, ob etwas gewählt wurde oder nicht - bei einem Eingabefeld ist auch ein leerer Wert eine Information, bei einer Checkbox oder einem Radiobutton nicht.
Cheatah
Hallo,
hallo, habe bei $_POST das problem das die bezeichnung der checkboxen (in einem formular) nicht übermittelt wird wenn diese nicht aktiviert wurden !
Das ist voellig normal, wie es sein soll, und hat nichts mit PHP zu tun.
Lies:
http://www.w3.org/TR/html401/interact/forms.html#checkbox
http://www.dclp-faq.de/q/q-formular-checkbox.html
Gruesse,
Thomas
Huhu Dude
eine Lösung ist es ein zusätzliches "hidden field" vor der Checkbox einzufügen.
Also z.B.
<input type="hidden" name="autobesitzer" value="nein">
<input type="checkbox" name="autobesitzer" value="ja">
Viele Grüße
lulu
Hallo,
eine Lösung ist es ein zusätzliches "hidden field" vor der Checkbox einzufügen.
<input type="hidden" name="autobesitzer" value="nein">
Dieses wird aber _immer_ uebertragen, auch wenn der Benutzer
das folgende auch noch ankreuzt:
<input type="checkbox" name="autobesitzer" value="ja">
mfg,
Thomas
Huhu Thomas
Dieses wird aber _immer_ uebertragen, auch wenn der Benutzer
das folgende auch noch ankreuzt:<input type="checkbox" name="autobesitzer" value="ja">
Ja, genau so ist es.
PHP behandelt das aber so, dass der zweite Wert den ersten überschreibt.
Bei Perl wäre es hingegen ein Array mit beiden Werten.
Probier es mal aus.
Viele Grüße
lulu
Moin!
Huhu Dude
eine Lösung ist es ein zusätzliches "hidden field" vor der Checkbox einzufügen.
Wüärrrgh! _Das_ ist keine Lösung, das ist einfach nur eklig!
_Wenn_ schon zwei Formularelemente nehmen, dann nicht zwei, bei denen man hoffen muß, dass sie sich gegenseitig überschreiben.
Also auf deutsch: Zwei Radiobuttons, und die Sache wäre erledigt:
<input type="radio" name="autobesitzer" value="nein">
<input type="radio" name="autobesitzer" value="ja">
Dann klappts auch mit dem Nachbarn. :)
- Sven Rautenberg
Huhu Sven
Wüärrrgh! _Das_ ist keine Lösung, das ist einfach nur eklig!
Also mir gefällt es und es funktioniert hervorragend.
_Wenn_ schon zwei Formularelemente nehmen, dann nicht zwei, bei denen man hoffen muß, dass sie sich gegenseitig überschreiben.
Also bis jetzt hat das "Prinzip Hoffnung" in allen Umgebungen 100%ig funktioniert.
Habe auch bisher keine Informationen gefunden, dass diese Vorgehensweise illegal wäre.
PHP wertet die POST-Werte offensichtlich anders aus als z.B. Perl.
Bleibt zu fragen was "richtiger" ist.
Viele Grüße
lulu
Moin!
Wüärrrgh! _Das_ ist keine Lösung, das ist einfach nur eklig!
Also mir gefällt es und es funktioniert hervorragend.
Mir gefällt es nicht. Sollte deutlich geworden sein. :)
_Wenn_ schon zwei Formularelemente nehmen, dann nicht zwei, bei denen man hoffen muß, dass sie sich gegenseitig überschreiben.
Also bis jetzt hat das "Prinzip Hoffnung" in allen Umgebungen 100%ig funktioniert.
Die Sache ist die: Was passiert, wenn in einer neuen PHP-Version plötzlich der zweite Wert nicht mehr den ersten überschreibt, sondern wie in Perl ein Array anlegen würde?
Du hoffst, dass sich das bei PHP niemals ändert.
Und was die Perl-Variante angeht: Warum ein Array erstellen, wenn ein Skalar funktionieren würde?
Mir ist eigentlich noch kein Szenario untergekommen, wo ich wirklich explizit nicht nur die JA-Information gewählter Checkboxen brauchte, sondern auch eine NEIN-Information nichtgewählter Checkboxen.
Weil: Entweder sind die Checkboxen sowieso statisch - also sind alle Checkboxen, die nicht zurückgesendet werden, offensichtlich nicht gewählt.
Oder die Checkboxen sind dynamisch generiert. Dann kann ich mir im Zweifel merken, welche Checkboxen ich rausgesendet habe, und mit denen vergleichen, die zurückgekommen sind. Sofern das überhaupt notwendig ist.
Alle diese Methoden sind eleganter und sparsamer mit Daten, als dein "Würgaround". :)
- Sven Rautenberg
Huhu Sven
Die Sache ist die: Was passiert, wenn in einer neuen PHP-Version plötzlich der zweite Wert nicht mehr den ersten überschreibt, sondern wie in Perl ein Array anlegen würde?
Du hoffst, dass sich das bei PHP niemals ändert.
Und wie ich das tue :-)
Alle diese Methoden sind eleganter und sparsamer mit Daten, als dein "Würgaround". :)
Naja, was mir an dem Würgaround so gut gefällt ist, dass ich alle
Formulareingaben hübsch im $_POST-Array stehen habe und nicht noch auf nicht- oder abgehakelte Checkboxen prüfen muss.
Das macht die Verarbeitung für manche Anwendungen viel einfacher und, meine Meinung, eleganter.
Viele Grüße
lulu
Hallo,
ist doch ganz klar.
Wenn die Checkbox aktiviert ist, dann wird der Wert übermittelt. Was soll man denn sonst mit dem Wert anfangen?
So kann man überprüfen, ob deine Checkbox aktiviert wurde
if(isset($_POST["checkbox"]))
{
//Wurde aktiviert
}
MFG
Andavos