Tomsen: Totales Anfänger-Problem: Überprüfen einer Checkbox

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

  1. Hi,

    ich habe auf Anhieb nur zwei Anmerkungen:

    if ($tuedelue != false)

    1. Du verlässt dich auf register_globals=on, d.h. aus einem Formularfeld wird automatisch eine PHP-Variable. In neueren PHP-Versionen sollte diese Verhalten aus Sicherheitsgründen deaktiviert sein. Der korrekte Zugriff wäre dann über $_GET["tuedelue"] bzw. $_POST["tuedelue"], je nach Formular-Methode.
    2. Wenn du weißt was du erwartest, warum prüfst du es nicht auch echt ab?
      if (isset($_POST["tuedulue"] && $_POST["tuedulue"] == "jabitte")
      -> Checkboxen kommen immer mit ihrem Value an.

    MfG
    Rouven

    --
    -------------------
    Ambition is the last refuge of failure.  --  Oscar Wilde (Irish Poet, Novelist, Dramatist and Critic, 1854-1900)
    1. Hallo Rouven,

      1. 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

      1. 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

        1. Hi,

          Lass dir mal mit print_r($_POST) ausgeben was von dem Formular so ankommt...

          Bei aktivierter Checkbox kommt da "Array ( )" raus :´-(

          Gruß
          Tomsen

          1. 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

            1. 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

              1. 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

                1. 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