从复选框数组中插入多个以逗号分隔的值

时间:2014-01-23 17:21:18

标签: javascript php mysql arrays insert

这是我现有的代码 我的db看起来像这样

req table
test_id(auto increment)    test_work varchar(50)

<?php
include_once '../connect.php'; //database connection
if($_COOKIE["Utype"]!="Logistic")
{
                header("Location: login.php");
}

if(!isset($_POST['mat']))
{
     $checkboxValue = false;
} else {
     $checkboxValue = $_POST['mat'];
}

$values = implode(",", $_POST["mat"]);

$sql="Insert into req(test_work)
values ('$values')";
$result=mysql_query($sql);

?>


<script>
function toggle(source) {
  checkboxes = document.getElementsByName('mat[]');
  for(var i=0, n=checkboxes.length;i<n;i++) {
    checkboxes[i].checked = source.checked;
  }
}

$('input[type="checkbox"]').on('change', function(e){
        if($(this).prop('checked'))
        {
            $(this).next().val(1);
        } else {
            $(this).next().val(0);
        }
});

</script>
<form name="form" action="test.php" method="post">
<table border="1" width="200px" style="position:relative;top:0px;font-family:tahoma;font-size:12px;border-collapse:collapse">

<tr style="background-color:#f3f3f3">
<th width="2%"></th>
<th height="20px" width="15%">Work Order ID</th>
</tr>
<?php 
$resource=mysql_query("Select * from test",$con);

while($result2=mysql_fetch_array($resource))
    { 
    ?>
<tr style="background-color:#ffffff">
<td align="center"><input type="checkbox" name="mat[]" id="mat" value="<?php  echo $result2["id"]; ?>"/><?php  echo $result2["id"]; ?></td>
<td><?php  echo $result2["name"]; ?></td>
</tr>
<?php };?>
</table>
<input style="color:#FFFFFF;position:relative;width:70px"type="submit" name="submit" id="submit" value="Save" class="imgClass" height="50px">
</form>

这只能插入一个选中的复选框。但如果我检查多个复选框,它只会插入一个值。

如何执行单个和多个(使用逗号分隔)插入? 像

好像我从数组中选择了四个复选框

 req table
    test_id(auto increment)    test_work varchar(50)
    23                         1, 2, 3, 4

当我只选择一个复选框

时,它会省略逗号
 req table
        test_id(auto increment)    test_work varchar(50)
        23                         1

2 个答案:

答案 0 :(得分:0)

因此,不是将一条记录插入到req中,并且test_work的值为'val1,val2,val3',您希望它插入三条记录,其值为'val1','val2','val3',对吗?

在这种情况下,试试这个:

if(!isset($_POST['mat']))
{
    $checkboxValue = false;
} else {
    $checkboxValue = $_POST['mat'];
    foreach($_POST['mat'] as $val)
    {
        $query = "INSERT INTO req (test_work) VALUES ('$val')";
        mysql_query($query);
    }
}

答案 1 :(得分:0)

这很有效。您的代码将采用多个复选框并生成一个字符串,如:1,2,5。

这将在您的数据库中插入一行&#34; test_work&#34; column的值为1,2,5。