Bettina: Verbelegte Formularfelder (Checkbox)

Hi!

Ich habe ein kleines Problem:

Ich habe ein Formular mit Checkboxfeldern.
Wenn Sie angekreuzt sind, soll in eine DB der Wert JA übertragen werden. Ich möchte nun, das wenn kein Hacken angekreuzt ist der Wert NEIN übertragen wird.

Hat ihr eine Ahnung wie das geht ?

Danke in vorraus!

Bettina

  1. Hallo Bettina

    Wenn Sie angekreuzt sind, soll in eine DB der Wert JA übertragen werden. Ich möchte nun, das wenn kein Hacken angekreuzt ist der Wert NEIN übertragen wird.
    Hat ihr eine Ahnung wie das geht ?

    Ich glaube, viele Leute haben die - allein schon, weil es unter http://selfhtml.teamone.de/html/formulare/auswahl.htm#checkboxen nachzulesen ist.

    viele Gruesse
      Stefan Muenz

    1. Hallo Bettina

      muss mich noch mal korrigieren - HTML-seitig kannst du nur einen Wert angeben, der uebertragen wird, wenn die Checkbox angekreuzt ist. Um das Gewuenschte zu erreichen, kannst du mit JavaScript arbeiten. Dazu belegst du erst mal alle Checkboxen mit value="NEIN" vor und setzt die value-Eigenschaft bei onChange je nachdem, ob die Checkbox gerade angekreuzt ist oder nicht, auf JA oder NEIN.
      Siehe dazu:
      http://selfhtml.teamone.de/javascript/sprache/eventhandler.htm#onchange
      http://selfhtml.teamone.de/javascript/objekte/elements.htm#checked

      viele Gruesse
        Stefan Muenz

      1. Hallo Bettina

        muss mich noch mal korrigieren - HTML-seitig kannst du nur einen Wert angeben, der uebertragen wird, wenn die Checkbox angekreuzt ist. Um das Gewuenschte zu erreichen, kannst du mit JavaScript arbeiten. Dazu belegst du erst mal alle Checkboxen mit value="NEIN" vor und setzt die value-Eigenschaft bei onChange je nachdem, ob die Checkbox gerade angekreuzt ist oder nicht, auf JA oder NEIN.

        Ich glaube, da hast du ein wenig zuviel drüber nachgedacht...

        Checkboxen werden nur übertragen, wenn sie angekreuzt sind. Wenn der Value geändert und übertragen werden soll, müssen die Boxen aber alle immer angekreuzt sein - nicht gerade sehr förderlich. ;)

        Außerdem: Als Startbedingung würden ja nicht-angekreuzte Checkboxen mit "Nein" belegt, angekreuzte "checked"-Checkboxen mit "Ja". Ohne Aktion werden die Nein-Boxen nicht übertragen.

        Ohne grundsätzliche Intervention mit Javascript, also Übertrag der Checkboxen in Hidden-Felder (abhängig von der Ankreuzung) vor dem Abschicken (onSubmit) geht es garnicht. Und natürlich auch ohne Javascript nicht.

        Die sauberste Lösung ist, die "Nein"-Felder vom Auswerteskript erzeugen zu lassen. Gewöhnlicherweise sollte das Skript wissen, welche Felder alle vorhanden sind, und kann sie als Default schonmal auf "Nein" setzen. Die übertragenen Checkboxen werden dann mit "Ja" überschrieben, und alles in die Datenbank gepackt...

        - Sven Rautenberg

        1. Hallo Bettina

          Die sauberste Lösung ist, die "Nein"-Felder vom Auswerteskript erzeugen zu lassen. Gewöhnlicherweise sollte das Skript wissen, welche Felder alle vorhanden sind, und kann sie als Default schonmal auf "Nein" setzen. Die übertragenen Checkboxen werden dann mit "Ja" überschrieben, und alles in die Datenbank gepackt...

          ich würde das sowieso alles nicht mit javascript machen - da der kram ja in ne datenbank nachher reinkommt, geh ich mal davon aus, dass da noch ein übermittlungsprogramm davor steckt.

          wenn wir nun davon ausgehen, das dieses welches progi in PHP geschrieben ist (oder PERL, Python, C... wie auch immer), ergibt sich folgende, simplere lösung:

          programm-struktur:

          • abfrage: wenn variable gesetzt ( == "ja"), dann einfach weiterleiten (bzw. sonstige aktionen ausführen)
          • wenn variable NICHT gesetzt ( != "ja" OR bzw. || !variable), dann variable selber setzen auf "NEIN", dann weiterleiten (bzw. siehe oben)

          in PHP sähe das dann so aus (optimiert!):

          <?php

          // check, if var set

          if(!$var) {
           $var = "NEIN";
          }

          // ... aufruf der datenbank bzw. weitere schritte

          ?>

          cu, w0lf.