Christoph: Checkboxen auswerten

Hallo,

ich habe ein Formular mit mehreren Checkboxen. Es können mehrere ausgewählt sein und sollen "gecheckt" sein wenn man Sie z.B. angeklickt hatte und dann auf absenden drückt und wenn irgendwo ein Fehler Auftritt, quasi er hatte seine Emailadresse vergessen einzugeben oder ähnliches. Ich hab das mal so gelöst:

<td bordercolor="#999999"><input type="checkbox" name="skulptur1[]" value="rot" <?php if (preg_match("/rot/", "$skulptur1")) { echo "checked"; } else { echo ""; }?>></td>
<td bordercolor="#999999"><input type="checkbox" name="skulptur1[]" value="blau" <?php if (preg_match("/blau/", "$skulptur1")) { echo "checked"; } else { echo ""; }?>></td>
<td bordercolor="#999999"><input type="checkbox" name="skulptur1[]" value="gelb" <?php if (preg_match("/gelb/", "$skulptur1")) { echo "checked"; } else { echo ""; }?>></td>
<td bordercolor="#999999"><input type="checkbox" name="skulptur1[]" value="beige" <?php if (preg_match("/beige/", "$skulptur1")) { echo "checked"; } else { echo ""; }?>></td>
<td bordercolor="#999999"><input type="checkbox" name="skulptur1[]" value="braun" <?php if (preg_match("/braun/", "$skulptur1")) { echo "checked"; } else { echo ""; }?>></td>

aber er behält sich leider nix :/

Wer weiß Rat und hilft mir?

Grüße aus Mainz

Christoph

  1. hi,

    <td bordercolor="#999999"><input type="checkbox"
    name="skulptur1[]"

    demnach wird $skulptur, bzw. viel eher $_REQUEST['skulptur'], im verarbeitenden script ein array sein.

    if (preg_match("/rot/", "$skulptur1"))

    dort nutzt du aber nicht die array-schreibweise (und zudem unsinniger weise anführungszeichen).

    gruß,
    wahsaga

    --
    [ Hier könnte Ihre Werbung stehen! ]
  2. Huhu Christoph

    <td bordercolor="#999999"><input type="checkbox" name="skulptur1[]" value="rot" <?php if (preg_match("/rot/", "$skulptur1")) { echo "checked"; } else { echo ""; }?>></td>
    <td bordercolor="#999999"><input type="checkbox" name="skulptur1[]" value="blau" <?php if (preg_match("/blau/", "$skulptur1")) { echo "checked"; } else { echo ""; }?>></td>
    <td bordercolor="#999999"><input type="checkbox" name="skulptur1[]" value="gelb" <?php if (preg_match("/gelb/", "$skulptur1")) { echo "checked"; } else { echo ""; }?>></td>
    <td bordercolor="#999999"><input type="checkbox" name="skulptur1[]" value="beige" <?php if (preg_match("/beige/", "$skulptur1")) { echo "checked"; } else { echo ""; }?>></td>
    <td bordercolor="#999999"><input type="checkbox" name="skulptur1[]" value="braun" <?php if (preg_match("/braun/", "$skulptur1")) { echo "checked"; } else { echo ""; }?>></td>

    aber er behält sich leider nix :/

    Wer weiß Rat und hilft mir?

    Ich versuch's mal

    <?php if (preg_match("/rot/", "$skulptur1")) { echo "checked"; } else { echo ""; }?>

    1. die Anführungen bei "$skulptur1" sind überflüssig.
    2. $skulptur1 wird nicht initialisiert, vermutlich meinst Du $_POST['skulptur1'] (oder ggf. GET)
    3. aber selbst wenn register_globals on sein sollte wäre $skulptur1 ein Array und daher kann preg_match kein sinnvolles Ergebnis liefern
    4. Der else-Zweig ist komplett überflüssig
    5. bordercolor? Das ist kein gültiges Attribut, oder?

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. Hi lulu,

      ok habs mal so probiert:
      <input type="checkbox" name="skulptur1[]" value="rot" <?php if(isset($_REQUEST['skulptur1[]'])=="rot"){echo "checked";}?>> aber auch ohne jeglichen Erfolg.

      ich peil das irgendwie nicht...

      Christoph

      1. hi,

        ich peil das irgendwie nicht...

        dann schau dir doch erst mal das beispiel unter http://dclp-faq.de/q/q-formular-checkbox.html an.

        gruß,
        wahsaga

        --
        [ Hier könnte Ihre Werbung stehen! ]
        1. hm also in dem Beispiel hat derjenige doch eigentlich nur die [] weggelassen, aber wenn ich das mach, dann setzt er bei allen Checkboxen die Häkchen...

          dann schau dir doch erst mal das beispiel unter http://dclp-faq.de/q/q-formular-checkbox.html an.

          Gruß Christoph

          1. Huhu Christoph

            hm also in dem Beispiel hat derjenige doch eigentlich nur die [] weggelassen, aber wenn ich das mach, dann setzt er bei allen Checkboxen die Häkchen...

            So ist es auch richtig, da ja sobald eine Checkbox "gehakelt" war
            ein entsprechendes Array angelegt wird.
            D.h. die Prüfung per isset ist wahr.

            Du möchtest nun aber eigentlich prüfen ob eine _bestimmte_ Checkbox gehakelt war.

            Da kannst Du z.B. entweder

            a) den konkreten Array-Index abfragen

            <input type="checkbox" name="skulptur1[123]" value="rot" <?php if(isset($_REQUEST['skulptur1[123]'])){echo "checked";}?>>

            b) oder prüfen ob der zugehörige Wert im Array vorhanden ist
            <input type="checkbox" name="skulptur1[]" value="rot" <?php if(isset($_REQUEST['skulptur1']) && in_array('rot', $_REQUEST['skulptur1'])){echo "checked";}?>>

            Viele Grüße

            lulu

            --
            bythewaythewebsuxgoofflineandenjoytheday