Mehrere checkbox-Werte gemeinsam speichern?

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

  • Mehrere checkbox-Werte gemeinsam speichern?

    Hallo zusammen,

    ich schreibe gerade ein Formular, in welchem die User per Haken an verschiedenen Checkboxen Werte auswählen können. Diese Werte werden gemeinsam mit Komma getrennt in die DB gespeichert.

    Und nun meine Frage: In einem weiteren Formular, in dem man seine Eingaben überarbeiten kann, würde ich gerne diese Checkboxen wieder darstellen und die vorher (bei der Eingabe angehakten) Checkboxen auch wieder mit den Haken versehen. Ist so etwas möglich und hat jemand eine Idee, wie es gehen könnte?

    Danke schonmal im voraus, ich hoffe, dass ich das Problem verständlich schildern konnte.


    Gruß
    langerxxx
    Zuletzt geändert von langerxxx; 29.09.2003, 00:33.

  • #2
    Eine einfache Möglichkeit ist, dass Du alle Checkboxen gleich benennst und damit ein Array bildest und diese in einem Formular platzierst.
    PHP-Code:
    echo "<td><input type=\"checkbox\" name=\"box[]\"></td>"
    Bei jeder weiteren Box wird dann das Array automatisch um einen Indexzähler erhöht. Auf die einzelnen Boxen kannst Du dann mit $box[$index] zugreifen.

    Auf der Auswertungsseite kannst Du den Wert der einzelnen Boxen auswerten: ist sie mit einem Haken versehen, so hat sie den Wert "1" (oder true), ansonsten existiert die Variable mit diesem Index nicht.

    Mit isset($box[$index]) kannst Du also abfragen, ob eine Box angehakt wurde oder nicht. Die Logik für Deine Datenbank musst Du natürlich selbst machen.
    Zuletzt geändert von DSB; 29.09.2003, 00:35.

    Kommentar


    • #3
      Ich glaub das was du suchst ist eher das hier:

      <input type="checkbox" name="Blabla" checked="checked">

      Damit sind die Checkboxen von Anfang an markiert(haben ein Häckchen)! Wie du das PHP außenrum schreibst siehe Posting von DSB!

      Kommentar


      • #4
        Danke schonmal, das hilft mir glaube ich schonmal weiter... Falls spezielle Probleme auftreten, kann ich ja hier nochmal posten, oder?

        Danke und viele Grüße
        langerxxx

        Kommentar


        • #5
          Hallo zusammen,

          jetzt bin ich bei so einem speziellen Problem gelandet, wo ich nicht weiterkomme...

          In meiner Datenbank sind die Werte der checckboxes in diesem Format gespeichert: Eintrag1,Eintrag2,Eintrag3,Eintrag4,Eintrag5

          Mit folgendem Code lese ich die Werte wieder aus, trenne sie bei den Kommata und stelle entsprechend angehakte (checked) Checkboxen dar. Anstatt spliti könnte man auch explode nehmen.

          PHP-Code:
          $res mysql_query("SELECT * FROM userdata")or die(mysql_error());
          while(
          $row mysql_fetch_array($res))
          {
          $checkbox_explode spliti(",",$row[bereiche]);
          for (
          $i=0$i<=count($bereiche_explode); $i++)
          {
          echo 
          "<tr><td><input type=\"checkbox\" name=\"bereiche[]\" value=\"$row[bereiche]\" checked>$row[bereiche]</td></tr>";
          }

          Das funktioniert so weit auch ganz gut, allerdings ist die Darstellung bzw. Reihenfolge der Checkboxen sehr merkwürdig... Meine Ausgabe - die eckigen Klammern stehen für jeweils eine Checkbox:

          []Eintrag5
          []Eintrag5
          []Eintrag4
          []Eintrag1,Eintrag2,Eintrag3,Eintrag4,Eintrag5

          Wo könnte denn da der Fehler liegen?? Ich finde ihn einfach nicht...

          Danke und Gruß
          langerxxx

          Kommentar


          • #6
            Hmm...ich und Arrays...ohne, also der Schnipsel Code der da steht is aber nicht per Copy&Paste dahingekommen oder?

            Das müsste erst mal heißen ... count($checkbox_explode) ...

            Und dann
            PHP-Code:
            echo ("<tr><td><input type=\"checkbox\" name=\"Checkbox[$i]\" ");
            if (
            $checkbox_explode[$i]==1) echo ("checked>") else echo (">");
            echo (
            "Checkbox$i</td></tr>"); 
            Ich komm noch mit deinen Bezeichnern durcheinander.... ich weiß net was da jetzt alles in der Spalte "Bereiche" so alles drin stehn soll.....kann sein das des ganz falsch is was ich da oben geschrieben hab....aber so oder so ähnlich würde ichs machen.....

            Kommentar


            • #7
              Danke für eure Hilfe und den Hinweis auf den Syntax-Fehler. Ich habe das Problem jetzt lösen können und den Code noch etwas erweitert... Wenn man jetzt noch die Checkboxes darstellen möchte, die vorher nicht angehakt waren, dann sieht der komplette Code so aus:

              PHP-Code:
              $res mysql_query("SELECT * FROM userdata WHERE id = '$aendern_id'");
              while(
              $row mysql_fetch_array($res)) 

                  
              $bereiche_explode explode(",",$row[bereiche]);
              }

                  
              $alle_bereiche = array('Wert1','Wert2','Wert3','Wert4','Wert5','Wert6');

                  for (
              $i=0$i<count($alle_bereiche); $i++)
                  { 
                      if (!
              in_array($alle_bereiche[$i],$bereiche_explode)){
                      echo 
              "<tr><td><input type='checkbox' name='bereiche[]' value='$alle_bereiche[$i]'>$alle_bereiche[$i]</td></tr>";
                      }
                  }

                  for (
              $i=0$i<count($bereiche_explode); $i++)
                  { 
                      echo 
              '<tr><td><input type="checkbox" name="bereiche[]" value="'$bereiche_explode[$i] . '" checked>' $bereiche_explode[$i] . '</td></tr>';
                  } 
              Vielleicht kann ja noch jemand etwas damit anfangen.

              VG
              langerxxx

              Kommentar

              Lädt...
              X