首页 > 解决方案 > POST选中和未选中复选框状态(PHP)

问题描述

我的一个网站包含一张表格。此表的信息来自数据库。假设每个位置的 ID 和一个表示复选框的布尔值,它从数据库中加载 0 或 1 并“预先”选中或取消选中复选框。

<input class='cb' name='check[]' value='".$buyedposition."' type='checkbox' "; ?> <?php if($buyedposition==1){echo "checked";} ?> <?php echo ">";

$buyedposition是数据库中的 0 或 1 信息。

现在,用户可以通过单击表中显示的每条记录来更改复选框。表格也是一种形式。使用提交按钮,新值应该 POST 到下一个 php 文件以更新记录。但它不起作用。

只有选中的复选框会通过,数组大小=选中的复选框的数量。我已经尝试过隐藏输入,但数组大小不正确。对于 4 个空复选框,数组大小为 4。如果我选​​中所有 4 个,则数组大小为 8。

数组的 var_dump(所有 4 个复选框都被选中):

array(8) { [0]=> string(0) "" [1]=> string(1) "0" [2]=> string(0) "" [3]=> string(1) "0" [4]=> string(0) "" [5]=> string(1) "0" [6]=> string(0) "" [7]=> string(1) "0" }

使用“isset”也不起作用。(!isset($_POST["check"]) 当没有选中所有复选框时为真。我不能用它来问“好的,复选框 1 和 3,你选中了吗?”我只能用它来更新所有复选框如果用户未选中所有框,则为 0:

if(!isset($_POST["check"])){
        foreach($_POST["positionID"] as $key=>$value){
            $sql = $connection->prepare("UPDATE positionen SET buyed=? WHERE positionen.id = ?");
            $sql->bind_param("ii", $checktozero, $_POST["positionID"][$key]);
            $sql->execute(); 
        }

那么有没有办法解决这个问题呢?

标签: phphtmlmysqlpostcheckbox

解决方案


推荐阅读