如何通过多个select从动态生成的行插入MySQL数据?

时间:2014-07-16 07:13:14

标签: php jquery mysql ajax

tableA   tabA_id   name     value         
------------------------------------
Row1       25      nameA    1.25    
Row2       26      nameB    4.85    
Row3       27      nameA    3.25    

tableB   tabA_id   mytabA_id   multiple_tabA_id
--------------------------------------------------
Row1       25         1               1
Row2       25         1               3
Row3       25         1               4
Row4       26         2               1
Row5       26         2               2
Row6       27         1               1
Row7       27         1               2
Row8       27         1               4

tableC   tabC_id   name   
--------------------------
Row1        1      nameA               
Row2        2      nameB              
Row3        3      nameC               
Row4        4      nameD               

表C是用户列表。表A是我们有用户名,值的表。在表B中,我们有类似于tableA的视图,因为mytabA_id是来自tableA的名称,而multiple_tabA_id是属于多个数组的这些用户的ID。

第一个问题是将多个select保存到DB(到表A)。 第二个问题是对表B的INSERT行依赖于tableA。

我想在表A中动态添加新行。 我有一个源代码来添加JQuery的新行。我认为这很好。

function Add(){
counter += 1;

    $("#example2 tbody").last().append(
        "<tr>"+
        "<td>"+counter+ "</td>"+
        "<td><input id='name_" + counter + "' type='text' class='form-control'/></td>"+
        "<td><input id='value_" + counter + "' type='text' class='form-control'/></td>"+
        "<td><select multiple class='form-control' id='multiple'>"+
    "<?php $sql = mysql_query('select tabC_id, name from tableC'); while($row=mysql_fetch_array($sql)){ $name=$row['name']; $tabC_id=$row['tabC_id']; ?> <option value='<?echo $tabC_id;?>'><?echo $name;?></option><?}?>"+
    "</select></td>"+
    "<td><img src='./img/save-icon.png' class='btnSave'/><img src='img/delete-icon.png' class='btnDelete'/></td>"+
        "</tr>"
    );

        $(".btnSave").bind("click", Save);      
        $(".btnDelete").bind("click", Delete);
};   

行。比我将类型值保存到变量并将它们发送到php文件。文本是正确的,但我不知道多重选择是否正确。请找我一个错误。

function Save(){ 
   var par = $(this).parent().parent(); 

   var tdname = par.children("td:nth-child(2)");
   var tdvalue = par.children("td:nth-child(3)"); 
   var tdmultiple = par.children("td:nth-child(4)"); 

   var name = tdname.children("input[type=text]").val();
   var value = tdvalue.children("input[type=text]").val();
   var multiple = $( "#multiple" ).val() || [];

jQuery.post("table_save_ajax.php", {
   name:name,
   value:value,
   multiple:multiple
   },  function(data, textStatus){
      if(data == 1){
         $('#response').html("Successfull!!");
         $('#response').css('color','green');
         $('td:nth-child(5)').hide();

         tdname.html(tdname.children("input[type=text]").val());
         tdvalue.html(tdvalue.children("input[type=text]").val());
         tdmultiple.html(multiple.join( ", " ));

      }else{
         $('#response').html("Some Error Occurred");
         $('#response').css('color','red');
      }
   });

table_save_ajax.php

配置中的

仅与DB连接。这是对的。

<?php
include("config.php");
$name = $_POST['name'];
$value = $_POST['value'];
$multiple = $_POST['multiple'];
$sql = mysql_query("INSERT INTO tableA (name, value, multiple) VALUES ('$name','$value','$multiple')");

if(mysql_affected_rows()>0){
echo "1";
}else{
echo "2";
}
?>

没有多重选择,所有事情都是正确的。而且我想知道如何通过多重选择来纠正它。我想知道如何将数据INSERT到tableB。如何从数组中解析此数据并保存到DB。 感谢您的回复。

1 个答案:

答案 0 :(得分:0)

我试过这个,这对我有好处。 它是 table_save_ajax.php

$sql = mysql_query("INSERT INTO tableA (name, value) VALUES ('$name','$value')");

if($sql){
    $sqlselect = mysql_query("SELECT id FROM tableA ORDER BY id DESC LIMIT 1");
    if(mysql_num_rows($sqlselect) == 1){
      $row=mysql_fetch_array($sqlselect);
      $lastid=$row['id'];

      foreach ($multiple as &$value) {
        $sqlmultiple = mysql_query("INSERT INTO tableB (tabA_id, mytabA_id, multiple_tabA_id) VALUES ('$lastid', '$name', '$value',)");
        if(!$sqlmultiple){
          $sqldelete = mysql_query("DELETE FROM tableA WHERE id = '$lastid'");
        }  
      }
    } 
}