Totales Anfänger-Problem: Überprüfen einer Checkbox
Tomsen
- php
Hey Forum,
tüftele jetzt schon seit Stunden an einer if-Anweisung herum, die nichts anderes tun soll, als zu überprüfen ob eine blöde Checkbox angeklickt wurde. Hab noch nie mit Checkboxen gearbeitet, nur mit Radio-Buttons und hätte nie gedacht dass sie (die Checkboxen) mich so fertig machen könnten.
Formular-Seite (Lalala.html):
<input type="checkbox" id="mail" name="tuedelue" value="jabitte"><label for="mail">Mail schicken!</label>
Auswertung (post.php):
if ($tuedelue != false)
{
notify("laber@example.com");
}
Es sollte nicht etwa irgendwas mit dem Value der Checkbox angestellt werden, sondern nur geprüft ob diese vor dem Abschicken aktiviert wurde oder nicht! Wenn aktiviert soll das ding notify ausführen, wenn deaktiviert, dann nicht. Unglaublich simpel, nicht war?
Wieso nun geht das mit obigem Code nicht?
Noch ne kleine Anmerkung: Es handelt sich um ein Upload-Formular (enctype="multipart/form-data"). Sollte das damit vielleicht gar nicht gehen, checkbox daten zu übergeben?? Wäre natürlich schon bitter.
Greetz
Tomsen
Hi,
ich habe auf Anhieb nur zwei Anmerkungen:
if ($tuedelue != false)
MfG
Rouven
Hallo Rouven,
- Du verlässt dich auf register_globals=on, d.h. aus einem Formularfeld wird automatisch eine PHP-Variable.
jepp, die biester sind auch on. (und bleiben es :-)
if (isset($_POST["tuedulue"] && $_POST["tuedulue"] == "jabitte")
verdammt, geht nicht! also auch, wenn man die fehlende klammer einsetzt. Ich verstehe die Welt nicht mehr.
Gruß
Tomsen
Marc
jepp, die biester sind auch on. (und bleiben es :-)
Warum? Gibt es da irgend einen Grund für?
Und selbst wenn solltest du dir schon aus Kompatibilitätsgründen direkt angewöhnen Scripte zu schreiben die auch ohne auskommen...
Mal abgesehen davon das diese Art zu programmieren auch für dich viel übersichtlicher ist und dir einiges Helfen wird, wenn du in zwei Jahren mal wieder an deinen alten Code ran musst.
if (isset($_POST["tuedulue"] && $_POST["tuedulue"] == "jabitte")
verdammt, geht nicht! also auch, wenn man die fehlende klammer einsetzt. Ich verstehe die Welt nicht mehr.
Lass dir mal mit print_r($_POST) ausgeben was von dem Formular so ankommt...
Marc
Hi,
Lass dir mal mit print_r($_POST) ausgeben was von dem Formular so ankommt...
Bei aktivierter Checkbox kommt da "Array ( )" raus :´-(
Gruß
Tomsen
Hi,
also stimmt irgendwas mit deinem HTML-Code nicht. Überprüf mal dein form-Tag und den Rest vom HTML. Zumindest mal der Submit-Button sollte einen Wert übermitteln...
Marc
Hallo,
also stimmt irgendwas mit deinem HTML-Code nicht.
Okay, ich poste das einfach mal:
<form style="display:inline" target="_self" onsubmit="status()" method="POST" action="jupload.php" enctype="multipart/form-data">
<input name="file" size="10" type="file">
<span id="js"><input type="submit" name="submit" value="Go!">
<input type="checkbox" id="mail" name="tuedulue" value="jabitte"><label for="mail">Mail</label></span>
</form>
Der Datei-Upload funktioniert perfekt, aber ansonsten werden keine POST-Inhalte übertragen. Tragisch.
Gruß
Tomsen
Hi,
das Formular ist in Ordnung. Wenn ich das hier teste wird auch Ordnungsgemäß der $_POST-Array gefüllt. Versuch also mal den Punkt zu finden wo die Werte verloren gehen. Erster Ansatz wäre zum Beispiel die JavaScript-Funktion mal arsu zu nehmen. Oder in deinem PHP-Script das print_r($_POST) als aller erstes zu setzen und zu schaun ob da dann noch ein Wert vorhanden ist. Zumindest mal "[submit] => Go!" muss in jedem Fall in $_POST sein.
Grüße
Marc
Hallo AllesMeins,
Erster Ansatz wäre zum Beispiel die JavaScript-Funktion mal arsu zu nehmen.
Ja klasse, jetzt funktionierts! Es liegt definitiv an dem "onsubmit"-Eventhandler, aber wie kann das sein?
Und wie könnte ich das Problem umgehen, denn ich will eigentlich schon, dass das JavaScript ausgeführt wird, sobald man das Formular abschickt. (Es ersetzt den Go!-Button und fügt "Bitte warten..." ein).
Aber schonmal vielen Dank für deine Hilfe. Selbst wäre ich da nie drauf gekommen.
Gruß
Tomsen