Rudi: Ich kann checkboxen nicht auswerten

Ich habe in meinem Formular checkboxen:

<input type="checkbox" name="brennstoffe[]" value="Erdgas"> Erdgas

input type="checkbox" name="brennstoffe[]" value="Heizöl"> Heizöl

<input type="checkbox" name="brennstoffe[]" value="Fernwärme"> Fernwärme
<input type="checkbox" name="brennstoffe[]" value="Kohle"> Kohle
<input type="checkbox" name="brennstoffe[]" value="Erneuerbare Energiequellen"> Erneuerbare Energiequellen (z.B. Holz)
<input type="checkbox" name="brennstoffe[]" value="Solare Brauchwassererwärmung"> Solare Brauchwassererwärmung

Es können beliebig viele Kästchen angewählt werden. Wie bekomme ich die Werte in meine Datenbank in eine Spalte ?

Danke sehr

  1. Tag Rudi.

    Ich habe in meinem Formular checkboxen: [...] Es können beliebig viele Kästchen angewählt werden. Wie bekomme ich die Werte in meine Datenbank in eine Spalte ?

    Du kennst sicher Wie kann ich Checkboxen verarbeiten?. Wie schauen also deine bisherigen Versuche aus und wie ist deine Datenbank aufgebaut (Felder, Datentypen)?

    Siechfred

    1. Mein bisheriger Versuch ist

      $brennstoffe = serialize($_POST["brennstoffe"]);

      Dann kommt aber nur ein Wert in die Datenbank
      Der Dattyp in der Datenbank ist Mediumtext

      1. Hallo Siechfred!

        Hast Du den Link verfolgt _und_ gelesen, den Dir Rudi gepostet hat?

        Schönen Gruß

        Afra

        1. Ja den habe ich zehnmal verfolgt, aber bei diesem Beispiel werden die Werte angezeigt und nicht in eine Datenabnk gespeichert, deshalb komme ich mit ihm nicht klar.

          1. Hallo!

            Wo ist der prinzipielle Unterschied zwischen Ausgabe und Speichern von Daten? In beiden Fällen liegen die Daten auf Serverseite vor. An Stelle der Ausgabe speicherst Du die Daten einfach ab.

            Schönen Gruß

            Afra

            1. Also ich habe das jetzt so gemacht

              if (isset($_POST['brennstoffe'])) {
                reset($_POST['brennstoffe']);
                foreach ($_POST['brennstoffe'] as $k => $v)

              mysql_query("insert into tabelle(brennstoffe) values ($brennstoffe)");

              Was ich anstelle von print "... eingeben soll weiß ich nicht

              1. Tag Rudi.

                if (isset($_POST['brennstoffe'])) {
                  reset($_POST['brennstoffe']);
                  foreach ($_POST['brennstoffe'] as $k => $v)
                    mysql_query("insert into tabelle(brennstoffe) values ($brennstoffe)");

                Ups, warum so umständlich? Und wo bitte sind die Quotes um $brennstoffe? So in etwa müsste es eigentlich funzen[tm]:

                $brennstoffe = serialize($_POST['brennstoffe']);  
                $statement = sprintf("INSERT INTO tabelle SET brennstoffe='%s'", mysql_real_escape_string($brennstoffe));
                

                Irrtümer mögen die PHP-Experten aufklären :-)

                Siechfred

                1. Ich habe das jetzt so gemacht

                  if (isset($_POST['brennstoffe'])) {
                    reset($_POST['brennstoffe']);
                    foreach ($_POST['brennstoffe'] as $k => $v){
                    $brennstoffe = implode(', ',$brennstoffe);}}

                  Jetzt erscheint aber folgender Fehler:

                  Bad arguments to implode() in

                  Was sagt diese Meldung aus ?

                  1. Hallo Siechfred!

                    Beschäftige Dich zuerst einmal damit PHP zu verstehen udn einsetzen zu können. Implode hat folgende Argumente die man übergeben muss: string implode ( string glue, array pieces ) Da scheitert es bei Dir daran.

                    Mehr findest Du unter PHP-Handbuch

                    Schönen Gruß

                    Afra

                    1. Mittlerweile habe ich das Problem gelöst, um die Werte in die Datenbank einzutragen. Mittels serialize

                      Jetzt besteht nur noch das Problem, dass ich mir in einem Formular nur die Kästchen angekreuzt haben möchte, desen values denselben Wert haben wie die Werte die ich mittels des ersten Formulars angekreuzt habe. D.h. es wird angezeigt welche Kreuze wurden gemacht.

                    2. Hallo Siechfred!

                      Tag afra.

                      Beschäftige Dich zuerst einmal damit PHP zu verstehen udn einsetzen zu können.

                      Ja, du hast ja Recht :-)

                      Mehr findest Du unter PHP-Handbuch

                      Oh, das kenne ich aber schon!

                      Siech*gg*fred

                      1. Ahhhrg ;o(

                        Wieso werfe ich Eure Namen durcheinander...?

                        Afra

        2. Hallo Siechfred!

          Tag afra.

          Hast Du den Link verfolgt _und_ gelesen, den Dir Rudi gepostet hat?

          Oh, er hat mir einen Link gepostet? *klick* *brille putz* *klick again* Ja, wo denn?

          Siech*SCNR*fred

          1. Hallo Siechfred!

            Ich hatte irgendwie die Namen verdreht. Passiert mir nie mehr ;o)

            Schönen Gruß

            Afra

      2. Tag Rudi.

        $brennstoffe = serialize($_POST["brennstoffe"]);

        Hast du dir mal angesehen, was dabei herauskommt? Wie fügst du diesen String in deine Datenbank ein? Hast du daran gedacht, dass dir die Doublequotes in deinem serialisierten String evtl. einen Streich spielen könnten, du solltest den String vor dem Eintrag in die DB noch vorbehandeln (z.B. mit mysql_real_escape_string), damit es keine Probleme gibt. Ansonsten wäre ein bisschen mehr Code hilfreich.

        Siechfred

  2. du solltest dem array einen schlüssel geben. dann kannst du mit dem foreach key ==> value konstrukt arbeiten.

    also so:
    <input type="checkbox" name="brennstoffe[Erdgas]" value="Erdgas"> Erdgas
    <input type="checkbox" name="brennstoffe[Heizöl]" value="Heizöl"> Heizöl