如何将复选框数组中的数据保存到数据库

时间:2016-02-29 03:04:46

标签: javascript php checkboxlist

function check_uncheck(truefalse) {
  var boxes = document.forms[0].chkboxarray.length;
  var form = document.getElementById('checkForm');
  for (var i = 0; i < boxes; i++) {
    if (truefalse) {
      form.chkboxarray[i].checked = true;
    } else {
      form.chkboxarray[i].checked = false;
    }
  }
}
<form name="checkForm" id="checkForm" method="post" action="checkboxes1.php">
  <input type="checkbox" name="chkboxarray" value="1" /><br />
  <input type="checkbox" name="chkboxarray" value="2" /><br />
  <input type="button" name="CheckAll" value="Check All Boxes" onclick="check_uncheck(true)" />
  <input type="button" name="UncheckAll" value="Uncheck All Boxes" onclick="check_uncheck(false)" />
  <input type="submit" value="Save">

</form>

The snippet shows how it works without connection to a database

我正在尝试将从核对表发送的数据保存到数据库但是我被卡住了。我在考虑使用foreach,但我不知道该放什么。

我把它作为:

foreach($_POST['id'] as $add){
insert into database...
}

我该怎么做?

如果我执行此操作,Fred-ii和xjstratedgebx建议我只更改name="chkboxarray" to name="chkboxarray[]",那么javascript代码将停止工作。

<?php
include '../conec.php';
mysql_select_db("test",$conec)or die('Database does not exist.') or die(mysql_error());

$sql = mysql_query("SELECT * FROM user WHERE state='Not Signed Up'");
?>

<form name="checkForm" id="checkForm" method="post" action="checkboxes1.php">
    <?php
    while($row = mysql_fetch_array($sql)){
        $id = $row['id'];
        $name = $row['name'];
        $lName= $row['lName'];
        $concate = $name.' '.$lName;
        echo '<input type="checkbox" name="chkboxarray" value="'.$id.'" />'.$concate.'<br />';
    }


    ?>
    <!--<input type="checkbox" name="chkboxarray" value="1" /><br />
    <input type="checkbox" name="chkboxarray" value="2" /><br />-->
    <input type="button" name="CheckAll" value="Check All Boxes" onclick="check_uncheck(true)" />
    <input type="button" name="UncheckAll" value="Uncheck All Boxes" onclick="check_uncheck(false)" />
    <input type="submit" value="Save">

</form>

<script type="application/javascript">
function check_uncheck(truefalse){
    var boxes = document.forms[0].chkboxarray.length;
    var form = document.getElementById('checkForm');
    for(var i=0;i < boxes;i++){
        if (truefalse) {
            form.chkboxarray[i].checked=true;
        } else {
            form.chkboxarray[i].checked=false;
        }
    }
}
</script>

1 个答案:

答案 0 :(得分:2)

如果您更改了&#34; chkboxarray&#34;的复选框名称到&#34; chkboxarray []&#34;,然后在提交表单时检查的任何框都会将它们的值作为数组传递给服务器,并且键在&#34; chkboxarray&#34;。

基本上,改变这一行:

echo '<input type="checkbox" name="chkboxarray" value="'.$id.'" />'.$concate.'<br />';

要:

echo '<input type="checkbox" name="chkboxarray[]" value="'.$id.'" />'.$concate.'<br />';

因此,如果你var_dump $_POST超级全局,你应该看到类似的东西:

array(1) {
    [chkboxarray]=>
    array(2) {
        [0]=>
        string(1) "3"
        [1]=>
        string(1) "4"
    }
}

在上面的例子中,我们检查了id 3和4的复选框,因此将它们发送到服务器。

拥有该阵列后,将其插入数据库很大程度上取决于您尝试完成的内容以及数据库的架构。

希望有所帮助。

另外,公平地说,这正是@Fred在评论中的意思。

修改1

要使javascript与输入名称的更改一起使用,您需要更新javascript中您引用新名称(chkboxarray [])的输入名称的所有位置。< / p>

生成的代码应如下所示:

<script type="application/javascript">
    function check_uncheck(truefalse) {
        var boxes = document.forms[0]["chkboxarray[]"].length;
        var form = document.getElementById('checkForm');
        for (var i = 0; i < boxes; i++) {
            if (truefalse) {
                form["chkboxarray[]"][i].checked = true;
            } else {
                form["chkboxarray[]"][i].checked = false;
            }
        }
    }
</script>

我创建了一个小提琴来展示这个用于检查/取消选中所有框的工具:https://jsfiddle.net/solvomedia/3Ln468u3/