首页 > 解决方案 > PHP 中的嵌套循环和语句

问题描述

我有这段代码,我想根据使用 PHP 从数据库中获取的数字添加复选框,当单击复选框时,使用 JQuery 更新数据库中的字段,这适用于 1 个复选框,但这不适用于更多复选框,而且我的 PHP 循环也没有工作我如何添加带有循环的复选框,当用户单击任何复选框更新他自己在数据库上的字段时,任何人都可以解决我的问题?

我的 jQuery 代码:

$(document).ready(function () {
    $('#mycheckbox').change(function () {
        var returnVal = ("Are " + "you sure?");
        if (returnVal) {
            postToServer($(this).prop("checked"));

        } else {
            $(this).prop("checked", !$(this).is(":checked"));
        }
    });
    function postToServer(state) {
        let value = (state) ? 1 : 0;

        $.ajax({
            type: 'POST',
            url: 'checkbox.php',
            data: {'value': +value},
            success: function (response) {
                //handle response
            }
        });
    }
}

和我的 PHP 代码:

$sql1="SELECT * FROM `users` ";
$result1= mysqli_query($conn,$sql1);
$row1=mysqli_fetch_assoc($result1);
$lights=$row1["lights"];
for ($i=0; $i < $lights; $i++){
    if ($row["value"]=='1'){
        echo "<input type=\"checkbox\" class=\"checkbox\" id=\"mycheckbox\" checked=\"checked\">";
    } else {
        echo "<input type=\"checkbox\" class=\"checkbox\" id=\"mycheckbox\" >";
    }
}

标签: phpjqueryajaxloopsnested

解决方案


这应该可以解决您的循环未运行的问题,并且应该为每个用户打印出复选框

$users= mysqli_query($conn, "SELECT * FROM user");
while($row = mysqli_fetch_assoc($users)) {
    if ($row["value"]=='1'){
       echo '<input type="checkbox" class="checkbox" id="mycheckbox-'.$row["id"].'" checked="checked">';
    }else {
        echo '<input type="checkbox" class="checkbox" id="mycheckbox-'.$row["id"].'" >';
    }
}

将用户的 id 添加到每个复选框 id 中,以使每个复选框都有唯一的 id


推荐阅读