checkboxen: wert in der db speichern

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

  • checkboxen: wert in der db speichern

    Also, eins vorweg: meine PHP- & mysql-kenntnisse stecken noch in Kinderschuhen. Von daher bin ich mal wieder auf Hilfe angewiesen.

    Ausgangssituation:

    Ich habe relevante 2 Tabellen: Oberkategorien (ober_kat), Kategorien (kategorien)
    In "kategorie" habe ich für jede Oberkategorie ein Feld angelegt (ober_kat_id1, ober_kat_id2, ..., ober_kat_id4)


    Jetzt möchte ich, wenn ich eine Kategorie neu anlege oder editiere (ich geh erstmal von neu anlegen aus), dass ich diese via checkboxen einer bzw mehreren Oberkategorien zuweisen kann.

    Ich gebe die checkboxen wie folgt aus:

    PHP-Code:
    $sqlokat "SELECT * FROM ober_kat ORDER BY id DESC"
    $resultokat mysql_query($sqlokat$conn);
    while(
    $datensatz mysql_fetch_array($resultokatMYSQL_ASSOC)){
    $downokat1 "<table align=center cellpadding=0 cellspacing=0 border=0 width=60%>";
    $downokat .= "<tr>
        <td align=left>
            <input align=left type=checkbox name=ober_kat_id[] value="
    .$i.">".$datensatz["name"]."<br>
        </td>
    </tr>"
    ;
    $downokat2 "</table>"
    Bei aktivierter Checkbox soll der wert($i) 1 in die jeweiligen Felder (ober_kat_id[] -> 1 bis 4) übergeben werden. Die checkboxen, die nicht aktiviert sind, sollen den Wert 0 übergeben bzw eintragen.

    Mein Problem ist, dass ich es einfach nicht hinbekomme, die Werte in die Felder einzutragen(bleiben leer). Desweiteren werden die Namen der Checkboxen nixht erkannt. Zudem erscheint mir mein Lösungsweg für diese Problemstellung recht umständlich.

    PHP-Code:
    if($ober_kat_id[] == 1){
            
    $conn mysql_connect($mysql_host$mysql_user$mysql_password);
           
    $db mysql_select_db($mysql_db$conn);
          
    $sql "INSERT INTO kategorie (name,tag,pic,logo,status,ober_kat_id1,ober_kat_id2,ober_kat_id3,
    ober_kat_id4) VALUES ('
    $name', '$tag', '$pic', '$logo', '$status', '$ober_kat_id1',
     '
    $ober_kat_id2', '$ober_kat_id3', '$ober_kat_id4')";
    .... 
    Der Checkboxenname wird offenbar nicht erkannt. Wie zuvor erwähnt - bin noch ein ziemlicher Anfänger auf dem Gebiet und über Hilfe oder alternative Lösungsvorschläge dankbar.

  • #2
    der link hat mir mal geholfen.

    Wo kämen wir hin, wenn jeder sagte: Wo kämen wir hin? und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen?

    Kommentar


    • #3
      $i ist doch gar nicht definiert

      Kommentar


      • #4
        Original geschrieben von hydrococcus
        der link hat mir mal geholfen.
        Ok, habe mich jetzt ein wenig damit auseinandergesetzt. Der Verständnis halber, versuch ich mal wiederzugeben, was ich dort gelesen habe:

        PHP-Code:
        # Fall 1: Verschiedene Namen, gleicher Wert
        <input type="checkbox" name="cbutton[1]" value="yes" />
        <
        input type="checkbox" name="cbutton[2]" value="yes" />

        # Fall 2: "Gleiche" Namen, verschiedene Werte
        <input type="checkbox" name="cbutton[]" value="1" />
        <
        input type="checkbox" name="cbutton[]" value="2" /> 
        In der von mir angestrebten Lösung muss ich also von Fall 2 ausgehen. Generiere ich die Checkboxen denn Richtig?

        PHP-Code:
        <input align=left type=checkbox name=ober_kat_id[] value=".$i.">".$datensatz["name"]." 
        Ich will ja, das für jede aktivierte Checkbox der Wert 1 übergeben wird. Laut dem link wird ja nur ein Wert übermitteln, wenn die Checkboxen aktiviert sind. Reicht es, wenn ich die checkbox einmal generiere oder muss ich sie für jede Oberkategorie einmal generieren?
        $i muss demnach ja "irgendwie" zu 1 werden.

        Nun zur Abfrage:

        PHP-Code:
        if (isset($_REQUEST['cbutton'])) {
          
        reset($_REQUEST['cbutton']);
          foreach (
        $_REQUEST['cbutton'] as $k => $v) {
            print 
        "$k $v\n";
          }
        } else {
          print 
        "alle cbutton schlafen schon.\n";

        In meinem Fall also

        PHP-Code:
        if (isset($_REQUEST['ober_kat_id'])) {
          
        reset($_REQUEST['ober_kat_id']);
          foreach (
        $_REQUEST['ober_kat_id'] as $k => $v) {
            print 
        "$k $v\n";
          }
        } else {
          print 
        "alle cbutton schlafen schon.\n";

        Nun verstehe ich allerdings nicht, wofür $k bzw $v stehen.

        Zur Verständnis nochmal:

        isset überprüft allgemein, ob eine variable bzw ein array vorhanden sind
        reset gibt nur den ersten "Eintrag" eines Arrays wieder.
        foreach liest alle Werte aus und gibt sie nacheinander wieder

        Hab ich das richtig verstanden?

        Mir ist allerdings nicht klar, was genau $_REQUEST macht.

        Tut mir leid, wenn das Posting etwas länger geworden ist, aber ich will ja auch irgendwie verstehen, was ich da verbreche.


        Sind die Übergaben in die db denn richtig?

        PHP-Code:
        $sql "INSERT INTO kategorie (....ober_kat_id1,ober_kat_id2,ober_kat_id3,ober_kat_id4) VALUES
         (...'
        $ober_kat_id[0]', '$ober_kat_id[1]', '$ober_kat_id[2]', '$ober_kat_id[3]')"

        Kommentar


        • #5
          Wo ist $i definiert???

          Kommentar


          • #6
            Bisher:

            PHP-Code:
            $i 0
            Soll aber halt

            PHP-Code:
            $i 1
            draus werden, wenn die box aktiviert wird.

            Kommentar


            • #7
              das kann ich deinem Code aber nicht entnehmen.

              Außerdem solltest du dir mal genauer ansehen, wie checkboxen funktionieren. da wird dein ansatz nämlich nicht so dolle klappen.

              Kommentar

              Lädt...
              X