如何获取未选中和已选中复选框的值

时间:2018-05-22 13:41:24

标签: php checkbox

我有一个复选框列表,想要在提交时返回它们的值。我可以轻松地为已检查的那个做这个,但不是未经检查的?到目前为止,这是我的代码:

将所有地址簿和现有用户地址簿以及输出作为复选框的代码:

foreach ($ch2_response as $ab) {
    if ($ab['visibility'] == "Public") { 
        if (in_array($ab['name'], $userBooks)) { ?>
            <div class="checkbox">
                <label>
                    <input type="checkbox" checked="checked" name="addressBooks[]" value="<?php echo $ab['id']; ?>"><?php echo $ab['name']; ?>
                </label>
            </div>
     <?php   } else { ?>
             <div class="checkbox">
                <label>
                    <input type="checkbox" name="addressBooks[]" value="<?php echo $ab['id']; ?>"><?php echo $ab['name']; ?>
                </label>
            </div>
      <?php  }
    }
}

`
用于检查用户新选择的代码:

<?php
if (isset($_POST['submit'])) {
    address_books();
}
function address_books() {
    $book = $_POST['addressBooks'];
    if (!isset($book)) {
        $N = count($book);

        echo("You did not select $N book(s): ");
        for ($i = 0; $i < $N; $i++) {
            echo($book[$i] . " ");
        }
    } else {
        $N = count($book);

        echo("You selected $N book(s): ");
        for ($i = 0; $i < $N; $i++) {
            echo($book[$i] . " ");
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您无法获取未选中复选框的值。浏览器不会提交它们。

您可以在每个checkbox之前添加一个具有相同名称的隐藏输入字段,并为其指定您想要的错误值。

<input type="hidden" name="addressBooks" value="0">
<input type="checkbox" name="addressBooks" value="1">

取消选中该复选框后,浏览器会将隐藏值提交给服务器