我得到了一个复选框列表,当我选中复选框时,它应该将值插入到数据库中。当我取消选中该复选框时,它应该是从数据库中删除数据。

如果我在复选框中分配一个值,那么我只能获得选中的复选框值。
如果我使用隐藏字段,那么我可以获得复选框的所有值,但是我不知道哪个 1 是选中的,哪个 1 是未选中的。

任何人都可以帮忙吗?

    $num="3";
    for($i=1;$i<10;$i++){
    ?>
    <form name="form1" method="post" action="testcheckbox.php">
        <input type="hidden" name="task" value="validatesn">
        <input type="hidden" name="validate[]" value="<?php echo $i;?>">
        <input type="checkbox" name="validate[]" <?php if($num==$i){ echo "checked=checked";} ?> />Serialno<?php echo $i."<br/>"; ?>
    <?php
        $i++;
    }
    ?>
        <input type="submit" name="submit" value="Validate" />
    </form>

    <?php
    if($_REQUEST['task'] == 'validatesn'){
       $valid=$_POST['validate'];
       foreach($valid as $v){
           echo $v;  //show all checkbox values
           //if checkbox= checked then insert value into database
           //if untick the checked checkbox then delete data from database
    }
  }
?>

最佳答案

复选框的标记如下所示:

<input type="checkbox" value="myvalue" name="validate[]">

当您 POST 表单时,您将在 validate 中看到一个名为 $_POST 的数组。

如果该数组为空,则未选中该复选框。如果该数组包含“myvalue”,则选中该复选框。

如果您正在处理这样的多个复选框:
<input type="checkbox" value="myvalue1" name="validate[]">
<input type="checkbox" value="myvalue2" name="validate[]">

您的脚本需要知道 validate 中的 $_POST 数组可以包含 myvalue1myvalue2 的值。然后您可以查看 $_POST['validate'] ,如果数组中存在该值,则选中该复选框。您可以使用 array_diff() 轻松完成此操作,而无需编写任何循环。

关于php - 如何从复选框中获取未选中的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9848906/

10-16 23:41