values aus checkboxen in mysql

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

  • values aus checkboxen in mysql

    Hi, habe den ganzen Tag dran gearbeitet und im forum schon was gefunden..
    Also: in einem Formular in Tabellenstruktur habe ich 5 checkboxen und es sollen mehrere Werte übergeben bzw. in einer mysql DB gespeichert werden. Ich steuere die position in der Tabelle an, funzt auch.
    PHP-Code:
    for ( $i 16$i 17$i++ )
        {
    echo 
    "<TR>";
    echo 
    "<TD>".mysql_field_name($fields,$i)."</TD>";
    echo 
    "<TD><input type=\"checkbox\" name=\"Name[]\" value=\"Tim\">  Tim</input>";

    echo 
    "<input type=\"checkbox\" name=\"Name[]\" value=\"Tom\">  Tom</input>";

    echo 
    "<input type=\"checkbox\" name=\"Name[]\" value=\"Tam\">  Tam</input>";

    echo 
    "<input type=\"checkbox\" name=\"Name[]\" value=\"Tem\">  Tam</input>";

    echo 
    "<input type=\"checkbox\" name=\"Name[]\" value=\"Tum\">  Tam</input>";
            echo 
    "</TD></TR>";
        } 
    Ich übergebe die markierten Values wie z.B. Tim, Tom und Tam an:

    PHP-Code:
    if ($aktion=="hinzufügen") {

    $sql="INSERT INTO $MeineTabelle VALUES(";

    /////  hier nur das sql statement für Position in Tabelle $i=16;  
    ////   andere Positionen=unwichtig   ////////////////////////////
              
    $array get_defined_vars();    
            
             
    $FeldValuesserialize($array["Name"]);  // 

    $sql $sql " \"" .$FeldValues."\", ";    /// Komma, weil weiterer Eintrag 
                                                                  /// folgt 
    Mit serialize() ist es mir zum ersten mal gelungen, dass das Array auch ausgelesen wird, aber beim abspeichern erreicht mich dann folgende
    mysql-Fehlermeldung: (sql-statement Ausgabe mit echo)

    INSERT INTO namen_list VALUES( "0", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "a:3i:0;s:4:"Tim,";i:1;s:4:"Tom,";i:2;s:5:"Tam,";}", "") You have an error in your SQL syntax.

    Wasss'n das für'n Mist???
    Ohne serialize() wird nur der Eintrag 'Array' in meine DB eingetragen...
    Ich hab' bis jetzt 9 Std. dran gesessen und suche nun zu eurem Missgefallen nach Rat...

    Danke!

  • #2
    Re: values aus checkboxen in mysql

    Original geschrieben von inföchen

    INSERT INTO namen_list VALUES( "0", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",[color=red] "a:3i:0;s:4:"Tim,";i:1;s:4:"Tom,";i:2;s:5:"Tam,";}"[/color], "") You have an error in your SQL syntax.

    Wasss'n das für'n Mist???
    dann schau dir mal den roten Teil mal an. Warum machst du so was? Warum nicht genauer das Statement bauen? Tipp:

    insert into tbl_name (needed_col1[,needed_col2[,...]]) values (value1[,value2[,...]])

    Kommentar


    • #3
      hi...

      hatte mal ähnliches prob.. schau dir mal

      http://www.php-resource.de/forum/sho...ght=checkboxen

      an.. vielleicht hilft dir das!

      grüße!

      Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
      sondern mit den Augen das Manual zu lesen.

      Kommentar


      • #4
        escape' mal die anführungsstriche, wenn du schon die werte nicht einzeln speichern kannst.

        Kommentar


        • #5
          Ich hab's geschafft!!!

          Keine besonders elegante Lösung, aber ich habe genau das erreicht, was ich will:
          Zu einem DS in meiner Tabelle sollen die werte der markierten checkboxen in ein Datenfeld (hier Spalte "Namen") geschrieben werden:

          PHP-Code:
          /////////////// checkboxen im Formular  ///////////////////////

          if ($aktion==Formular)
          {
          for ( 
          $i 16$i 17$i++ )
              {
              echo 
          "<TR>";
              echo 
          "<TD>".mysql_field_name($felder,$i)."</TD>";
                          echo 
          "<TD>";
                          echo 
          "<input type=\"checkbox\" name=\"name[]\" 
          value=\"Tim, \">Tim</input>"

                  echo 
          "<input type=\"checkbox\" name=\"name[]\" value=\"Tom, \">Tom</input>";
                  echo 
          "<input type=\"checkbox\" name=\"name[]\" value=\"Tam, \">Tam</input>";
                  echo 
          "<input type=\"checkbox\" name=\"name[]\" value=\"Tem, \">Tem</input>";
                  echo 
          "<input type=\"checkbox\" name=\"name[]\" value=\"Tum\">Tum</input></TD>";  
                  echo 
          "</TR>";
              }
          }
          /// die values sind mit Komma getrennt, sonst stehen sie ohne Platzhalter im Datensatz ///


          ///////////  Übergabe und Speichern in Tabelle  //////////////////////

          if ($aktion=="hinzufügen")
          $sql="INSERT INTO $MeineTabelle VALUES(";
          {

          for ( 
          $i 16$i 17$i++ )
              {    
                  
          $array=$_POST['name'];

                  for(
          $j=0;$j<count($array);$j++)
                      {
                      
          $Name1 $array[0];  
                      
          $Name2 $array[1];
                      
          $Name3 $array[2];
                      
          $Name4 $array[3];
                      
          $Name5 $array[4];
                      } 
          /// Ende for

          /// unbedingt raus aus der Schleife, sonst wird jeder Wert aus einer checkbox als eigener Datensatz verstanden
              
                      
          $sql $sql "\"" .$Name1."".$Name2."".$Name3."".$Name4."".$Name5."\", ";
                      
                  
              } 
          klappt wunderbar!!

          das script ist aber nicht vollständig, es bezieht sich nur auf spalte i=16, den rest habe ich weggelassen...

          Danke an alle, die sich mit mir den Kopf zerbrochen haben

          Kommentar


          • #6
            evt solltest Du mal Deine tabellen normalisieren siehtr nicht danach aus...
            und Dein Code Block is ganz schön umständlich gedacht...
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar

            Lädt...
            X