Wieder mal was mit Formulardaten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wieder mal was mit Formulardaten

    In meinem Formular habe ich eine Reihe von Checkboxen. Auf der nächsten Seite soll dann überprüft werden, welche davon angeklickt sind. Bisher habe ich das so gemacht, dass jede Checkbox einen andern Namen hat und jede Checkbox auf der nächsten Seite mit isset() kontrolliert wurde.

    Das ist jedoch relativ umständlich.

    Bei 'SELFHTML' habe ich folgendes gefunden:

    Code:
    <form action="input_checkbox.htm">
    <p>Kreuzen Sie die gew&uuml;nschten Zutaten an:</p>
    <p>
    <input type="checkbox" name="zutat" value="salami"> Salami<br>
    <input type="checkbox" name="zutat" value="pilze"> Pilze<br>
    <input type="checkbox" name="zutat" value="sardellen"> Sardellen
    </p>
    </form>
    und als Erklärung dazu:
    "Mit dem Attribut value= bestimmen Sie einen internen Bezeichnerwert für jede Checkbox (value = Wert). Wenn der Anwender das Formular abschickt, werden die Bezeichnerwerte des oder der angekreuzten Buttons übertragen."

    Bei mir kommt aber immer nur ein Value an. Wie komme ich an die anderen Werte heran, die angekreuzt wurden?

    Es kommt nur ein String auf der nächsten Seite an, als ob nur ein Checkbox mit dem Namen 'zutat' übermittelt wurde.

    Meine URL (bei 'get'-Methode) sieht folgendermaßen aus:

    test2.php3?zutat=salami&zutat=pilze&zutat=sardellen

    Da werden doch die Variablen nacheinander überschrieben, und am Ende steht nur 'sardellen' drin. Wie komme ich aber an die anderen ran?

    Kann mir jemand einen Tipp geben, oder muss ich es wieder so wie oben beschrieben machen?
    Zuletzt geändert von LazyLow; 13.12.2002, 09:21.

  • #2
    Re: Wieder mal was mit Formulardaten

    wie fragst du die checkbox denn ab?

    afaik musst du als array darauf zugreifen, also $zutat[0], $zutat[1], $zutat[2].
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Das wird wie ein String behandelt.

      D.h., wenn ich alles angeklickt habe gibt er bei '$zutat' nur 'sardellen' aus.
      Und bei $zutat[0], $zutat[1],... den jeweiligen Buchstaben des Wortes 'sardellen' (also, s,a,...)

      Kommentar


      • #4
        Ich habe es jetzt auf die alte Art gemacht (jede Checkbox hat einen anderen Namen). Ist auch egal, da es ja funktioniert.

        Hätte ich halt nur geschickter gefunden, wenn es das automatisch aneinander gehängt hätte.

        Kommentar


        • #5
          Nimm bei den Namen der Checkbox nicht "zutat" sondern "zutat[]". Dann müßte es klappen.
          {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

          Kommentar


          • #6
            Besser ist noch für die Namen zutat[1], zutat[2] usw. zu nehmen. Dann kannst du die ausgewählten Optionen genau zuordnen. Anderenfalls weiß man nur wieviele Checkboxen gewählt wurden.
            {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

            Kommentar


            • #7
              mache ein array mit alle zutaten

              PHP-Code:
              $allezutaten = array ("pilze""thunfisch""schinken""usw."); 
              dieses kannst du über eine for- oder while-schleife ausgeben...

              PHP-Code:
              $i_max count($allezutaten);
              for (
              $i=0;$i<$i_max;$i++) {
                echo 
              "<input type=\"checkbox\" name=\"formzutat[]\" value=\"".$allezutaten[$i]."\"> ".$allezutaten[$i]."\n";

              später kannst du das ganze abprüfen.... (nach dem formularabschicken.)


              PHP-Code:
              $i_max count($formzutat);
              for (
              $i=0;$i<$i_max;$i++) {
                echo (
              in_array($formzutat[$i],$allezutaten) ? $formzutat[$i]." ist drin" $formzutat[$i]." ist NICHT drin";


              so sollte es funktionieren. [COLOR=red]habe es aber nicht getestet.[/COLOR]
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                sorry, die letzte schleife ist wahrscheinlich besser so zu lösen.


                PHP-Code:
                $i_max count($allezutaten);
                for (
                $i=0;$i<$i_max;$i++) {
                  echo (
                in_array($allezutaten[$i],$formzutat) ? $allezutaten[$i]." ist drin" $allezutaten[$i]." ist NICHT drin";

                [COLOR=red]auch nicht getestet!!!![/COLOR]
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar

                Lädt...
                X