variabel viele Checkboxen in DB eintragen

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

  • variabel viele Checkboxen in DB eintragen

    Hallo zusammen,

    ich arbeite gerade an einem Script, bei dem Einträge aus einer Datenbank mit einem Benutzer verknüpft werden sollen.
    Im Prinzip stellt das soweit kein Problem dar.
    Haarig wird es nun, weil die Einträge in der Datenbank ab und an mehr oder weniger werden können. Dadurch ergibt sich für mich das Problem, dass cih nicht von vorne herein weiß wie viele checkboxen vorhanden sein können und wie die Felder dazu heißen.

    Um das ganze zu verdeutlichen:

    Es gibt eine tabelle mit den Benutzerdaten, eine Tabelle welche den Namen und die beschriebung einer Kategorie enthällt und eine Tabelle welche beides miteinander verknüpft.

    Wichtig ist für mich aus der Benutzertabelle das Feld u_id und aus der Tabelle der Kategorien das feld k_name. beides soll in der dritten tabelle so zusammen kommen:

    feld 1 | feld 2
    u_id | k_name

    Nun kann es sein das es in der tabelle für die kategorien 1 einrag gibt oder 100. Und in dem Script, an dem ich arbeite soll nun die Möglichkeit bestehen per Checkbox sagen zu können das eintrag 10 und eintrag 23 mit dem benutzer mit der u_id 73 verknüpft werden soll damit er diese kategorien sehen kann.

    Und jetzt ist die große Preisfrage wie gehe ich da rann?

    Meine Überlegung war folgende:

    PHP-Code:
    $sql "SELECT k_name FROM kategorie";

    $resultmysql_query($sql) or die(mysql_error());

    while(
    $zeile=mysql_fetch_array($result,MYSQL_ASSOC))

    {

      echo
    '<tr>

      <td colspan="4" rowspan="1" align="undefined" valign="undefined">
    <input name="'".
    $zeile["k_name"]."'" value="1" type="checkbox">
     '".
    $zeile["k_name"]."'</td>

      </tr>'
    ;

        } 
    Dabei ist mir aber klar geworden das ich das nciht wirklich so machen kann, da ich bei dem script, welches die Daten dann ja verarbeitet gar nicht weiß wieviele Checkboxen dort ankommen.

    Weiß jemand Rat? Bzw. versteht überhaupt jemand was ich meine?
    Zuletzt geändert von Andi_K; 03.02.2006, 10:32.

  • #2
    Grundlagen: <input type="checkbox" name="meine_checkboxen[]" value="mein_wert" />
    Und den Array kannst du mit PHP wunderbar auslesen.
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

    Kommentar


    • #3
      Danke, habs mittlerweile auch herausgefunden. Kurz nach meinem Post sind mir die Schuppen von den AUgen gefallen

      Kommentar


      • #4
        Original geschrieben von Andi_K
        Kurz nach meinem Post sind mir die Schuppen von den AUgen gefallen
        wasch dich mal
        Sunshine CMS
        BannerAdManagement
        Borlabs - because we make IT easier
        Formulargenerator [color=red]Neu![/color]
        Herkunftsstatistik [color=red]Neu![/color]

        Kommentar


        • #5
          hm.. erstmal wärs schön den code umzubrechen, seitlich scrollen is unfein..
          und der code gibt dir so wie er da steht keinen parse error aus?????

          Kommentar


          • #6
            Sorry, hab das jetzt zum ersten mal gemacht mit dem code posten und wusste nicht das der dann so lang wird.
            Ob der Code allerdings so funktioniert kann ich dir nicht sagen, der hat sich in der letzten halben Stunde derbe verändert.

            Kommentar


            • #7
              So jetzt hab ich nochwas zum steinigen. Der will das nicht machen, was läuft da schief?

              PHP-Code:
              for($i 0$i count($_POST['kname']); $i++)
                  {
                      
              $sql="INSERT INTO `FG_zugewiesen` 
                      (`u_id`,`k_name`)
                      VALUES ('"
              .$u_id['u_id']."','".$_POST['kname'][$i]."')";
                      
              mysql_query($sql) or die(mysql_error());
                  } 
              $u_id['u_id'] hat den korrekten wert, daranliegt es nicht. Es liegt an dem $_POST['kname'] soweit bin ich schon

              Kommentar


              • #8
                hast du dir mal dein Array angesehen, den du per Post bekommst? Sicher nicht...

                PHP-Code:
                echo '<pre>';
                print_r($_POST);
                echo 
                '</pre>'
                Sunshine CMS
                BannerAdManagement
                Borlabs - because we make IT easier
                Formulargenerator [color=red]Neu![/color]
                Herkunftsstatistik [color=red]Neu![/color]

                Kommentar


                • #9
                  Doch, da kam die ganze zeit nix wie ich festgestellt habe. Nun kommts. Am Formular war ein Fehler.
                  Allerdings habe ich jetzt ein anderes Problem.
                  Und zwar macht das Arry genau das, was ein Array macht.
                  Hinter den Checkboxen sind Namen hinterlegt. Und die sollen in die DB. Jetzt geht der aber hin und schreibt mir jeweils einen Buchstaben dvon in die DB.
                  Was wohl daran liegt, das er bei nem Array ja eben Buchstaben für Buchstaben durchgeht.
                  Gibt es da eine einfache Möglichkeit die ganzen Wörter zu erhalten?

                  Kommentar


                  • #10
                    gib mal den aktuellen Code, hast sicher n Fehler gemacht.
                    Sunshine CMS
                    BannerAdManagement
                    Borlabs - because we make IT easier
                    Formulargenerator [color=red]Neu![/color]
                    Herkunftsstatistik [color=red]Neu![/color]

                    Kommentar


                    • #11
                      PHP-Code:
                      for($i 0$i <= count($_POST['kname']); $i++)
                          {
                              
                      $sql="INSERT INTO `FG_zugewiesen` (`u_id`,`k_name`)
                              VALUES ('"
                      .$u_id['u_id']."','".$_POST['kname'][$i]."')";
                              
                              
                      mysql_query($sql) or die(mysql_error());
                          } 
                      Das Wort ist zum Beispiel Weihnachten. Und wenn ich nur das anklicke wird in die DB "W" eingetragen.

                      Kommentar


                      • #12
                        das ist doch exakt der gleiche code wie oben oder?
                        $_POST['kname'][$i] -> so und jetzt mach mein <pre> ding rein und poste mal, was dir da ausgegeben wird!
                        Sunshine CMS
                        BannerAdManagement
                        Borlabs - because we make IT easier
                        Formulargenerator [color=red]Neu![/color]
                        Herkunftsstatistik [color=red]Neu![/color]

                        Kommentar


                        • #13
                          Array
                          (
                          [kname] => Weihnachten
                          )
                          Wenn ich zwei felder anklicke nimmt der trotzdem nur eines der Wörter.
                          Und die Checkboxen werden so erstellt:

                          PHP-Code:
                          while($zeile=mysql_fetch_array($result,MYSQL_ASSOC))
                          {
                            echo
                          '<tr>
                                <td colspan="4">
                                  <input name="kname" value="'
                          .$zeile["k_name"].'
                          " type="checkbox"> '
                          .$zeile["k_name"].'
                                </td>

                              </tr>'
                          ;
                              } 

                          Kommentar


                          • #14
                            du solltest eher ne foreach als ne for schleife verwenden
                            Sunshine CMS
                            BannerAdManagement
                            Borlabs - because we make IT easier
                            Formulargenerator [color=red]Neu![/color]
                            Herkunftsstatistik [color=red]Neu![/color]

                            Kommentar


                            • #15
                              Mache ich jetzt, aber er schmeißt mir den Fehler raus:
                              Warning: Invalid argument supplied for foreach() on line 30

                              und wenn ich

                              echo '<pre>';
                              print_r($_POST);
                              echo '</pre>';

                              verwende wird trotz mehrfachauswahl nur ein wort angezeigt. Kann es sein das das arry mit den chackboxen nicht so ganz funktioniert?

                              so sieht mein foreach aus: foreach($kaname as $katname)
                              Zuletzt geändert von Andi_K; 03.02.2006, 12:00.

                              Kommentar

                              Lädt...
                              X