Rudi: Problem mit checkboxen

Ich lasse mir in einem Formular checkboxen anzeigen. Dabei werden die checkboxen vormarkiert, deren Werte sich in der Datenbank befinden:

mysql_select_db("datenbank");
        $res = mysql_query("select * from tabelle");
        $num = mysql_num_rows($res);
if ($num == 1){
   $dsatz = mysql_fetch_assoc($res);

$typ = unserialize($dsatz['typ']);

<input type="checkbox" name="typ[]" value="Warmwasser" <?php if (in_array('Warmwasser', $typ)){echo "checked";}?>> Warmwasser
<input type="checkbox" name="typ[]" value="Warmluft" <?php if (in_array('Warmluft', $typ)){echo "checked";}?>> Warmluft
<input type="checkbox" name="typ[]" value="Teilweise Warmluft" <?php if (in_array('Teilweise Warmluft', $typ)){echo "checked";}?>> Teilweise Warmluft

Das funktioniert auch soweit.
Jedoch bei einem weiteren Feld mit checkboxen wird folgende Fehlermeldung hinter jeder checkbox angezeigt:

Warning: Wrong datatype for second argument in call to in_array in

Bei diesem Feld wurden keine checkboxen angewählt, d.h. er sucht nach den Werten, findet keine in der Spalte der Datenbank und schickt dann diese Fehlermeldung.
Wie kann ich das abstellen, dass er mir die Fehlermeldung anzeigt?

  1. hi,

    gehört diese Frage nicht eigentlich auch noch zu deinem anderen Thread, Ich kann checkboxen nicht auswerten ...?

    $typ = unserialize($dsatz['typ']);

    Kontrollausgabe $typ mittels var_dump()?

    <input type="checkbox" name="typ[]" value="Warmwasser" <?php if (in_array('Warmwasser', $typ)){echo "checked";}?>> Warmwasser
    [...]
    Jedoch bei einem weiteren Feld mit checkboxen wird folgende Fehlermeldung hinter jeder checkbox angezeigt:

    Warning: Wrong datatype for second argument in call to in_array in

    Hast du verstanden, was diese Meldung bedeutet?

    Bei diesem Feld wurden keine checkboxen angewählt, d.h. er sucht nach den Werten, findet keine in der Spalte der Datenbank und schickt dann diese Fehlermeldung.
    Wie kann ich das abstellen, dass er mir die Fehlermeldung anzeigt?

    In den du entweder dafür sorgst, dass zumindest der Typ des zweiten Parameters für in_array() korrekt ist - oder die Abfrage in dem Fall, dass es keine Werte gibt, auch gar nicht ausführst.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Danke,
      ich habe es mal so versucht, aber das Ergebnis ist das selbe

      <?php if (in_array('Warmwasser', $typ)){echo "checked";} else if (in_array('', $typ)){echo "";}?>

      1. hi,

        ich habe es mal so versucht, aber das Ergebnis ist das selbe

        Und was schließt du daraus?
        Könnte es vielleicht sein, dass du den gleichen Fehler immer noch machst?

        <?php if (in_array('Warmwasser', $typ)){echo "checked";} else if (in_array('', $typ)){echo "";}?>

        Wenn du also immer noch die Meldung

        Wrong datatype for second argument in call to in_array

        bekommst, dann ist $typ wohl an dieser Stelle immer noch kein Array - also was soll der Blödsinn, dass du immer noch versuchst, eine Array-Funktion darauf anzuwenden?

        Lies meine vorherige Antwort bitte noch mal, und zwar diesmal mit Verstand. Und beantworte bitte die Fragen.
        Wenn du die Antwort fast komplett ignorierst, und dann nur den gleichen Unfug noch mal machst, kommst du bei der Lösung des "Problems" wohl kaum weiter.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. In der angesprochenen Spalte in der Datenbank kommen die Daten so an:

          a:3:{i:0;s:17:"Warmwasserheizung";i:1;s:15:"Warmluft";

          Gehe ich recht davon aus, dass es sich um ein Array handelt, Meister?

          1. hi,

            In der angesprochenen Spalte in der Datenbank kommen die Daten so an:
            a:3:{i:0;s:17:"Warmwasserheizung";i:1;s:15:"Warmluft";

            Das ist ein Textstring.
            Ja, er sieht so aus, als ob man unserialize() darauf erfolgreich anwenden könnte.

            Gehe ich recht davon aus, dass es sich um ein Array handelt, Meister?

            Gehe ich recht in der Annahme, dass du dies für $typ immer noch nicht _überprüft_ hast, Mr. {eine_Bezeichnung_spare_ich_mir_hier}?

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Wenn ich also
              $typ = unserialize($dsatz['typ']);
              echo "$typ";

              eingebe, wird anstelle von $typ array angezeigt

              1. hi,

                Wenn ich also
                $typ = unserialize($dsatz['typ']);
                echo "$typ";
                eingebe, wird anstelle von $typ array angezeigt

                Und var_dump($typ) ergibt was?

                Was passiert, wenn du die Testausgabe exakt vor der Stelle machst, an der du die Meldung erhältst?

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
                1. Dann erscheint dies
                  Warning: Undefined variable: typ in ...
                  NULL

                  1. Tag Rudi.

                    Warning: Undefined variable: typ in ...

                    Du solltest vor dem Benutzen von in_array() abfragen, ob die Variable $typ definiert, nicht leer und ungleich 0 ist. Zusätzlich wäre es evtl. noch erforderlich zu prüfen, ob $typ tatsächlich auch ein Array ist.

                    Siechfred

                    1. Ich habe es jetzt hiermit erweitert

                      <?php if ($typ != '0'){if (in_array('Warmwasserheizung', $typ)){echo "checked";}}?>

                      So funktioniert es

                      1. hi,

                        Ich habe es jetzt hiermit erweitert
                        <?php if ($typ != '0'){if (in_array('Warmwasserheizung', $typ)){echo "checked";}}?>
                        So funktioniert es

                        Siechfred hat dir doch extra eine Funktion zur Überprüfung verlinkt - also warum machst du es derart unsinnig?

                        gruß,
                        wahsaga

                        --
                        /voodoo.css:
                        #GeorgeWBush { position:absolute; bottom:-6ft; }