选中PHP MYSQL复选框

时间:2012-12-18 11:16:11

标签: php mysql checkbox

使用这行代码,我将每个选中的复选框的值添加到数据库中:

    // ADD ALL TYPES TO PRODUCTIONLOG_TYPE TABLE
    $x=1;
    $values=array();
    foreach($_POST['id'] as $x)
    {
        $AddToListQuery = "
                        INSERT INTO
                        productionlog_type
                       (productionlogid, typeid)
                        VALUES
                       ('" . mysql_real_escape_string($_GET['productionlog']) . "', '". mysql_real_escape_string($x) ."')
                       ";
        mysql_query($AddToListQuery)or die("query fout " . mysql_error() );
    }

我这样做,所以如果在数据库中存在这个复选框,我可以回显一下复选框。

现在的问题是,当用户取消选中复选框并发送表单时,它没有传递任何值,对吧?所以我无法从数据库中删除它...意味着复选框仍然被选中。

我该怎么办?

1 个答案:

答案 0 :(得分:2)

如果您知道将返回哪个复选框,则可以过滤掉您所知道的复选框,然后仅保留未选中的复选框。

您还可以在发送请求之前查看页面的某些处理,例如使用JavaScript。

或者您可以在表单中传递另一个隐藏变量,其中包含您应该在PHP脚本中收到的所有复选框。例如:

<input type="hidden" value="id_1,id_2,id_3" />

如果您在PHP脚本中收到此内容,则可以看到预期的哪些ID(复选框)。


修改

如果你有:

<form method="POST">
    <input type="hidden" name="checks" value="id1,id2" />
    <input type="checkbox" name="id1" checked="checked" />
    <input type="checkbox" name="id2" />
</form>

然后在PHP中:

$arr = split(",", $_POST["checks"]);
foreach ($arr as $x){
    if(isset($_POST[$x])){
        // Add or update
    }else{
        // Remove
    }
}

注意:我还没有对代码进行测试,但是你只是想知道它是如何工作的