dude: $_POST & Checkboxen

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.

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

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. 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.

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

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. 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

    --
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
    Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
  3. 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

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

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

        --
        bythewaythewebsuxgoofflineandenjoytheday
    2. 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

      --
      Among the maxims on Lord Naoshige's wall, there was this one: "Matters of great concern should be treated lightly."
      Master Ittei commented, "Matters of small concern should be treated seriously."
      (Hagakure: The Way of the Samurai)
      1. 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

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

          --
          Among the maxims on Lord Naoshige's wall, there was this one: "Matters of great concern should be treated lightly."
          Master Ittei commented, "Matters of small concern should be treated seriously."
          (Hagakure: The Way of the Samurai)
          1. 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

            --
            bythewaythewebsuxgoofflineandenjoytheday
  4. 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

    --
    http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr