PHP-尝试根据复选框是否被选中来更新多个mysql值


PHP - Trying to update multiple mysql values based on if checkbox is checked

我目前正在开发一个积分/奖励系统,我面临的问题是这样查询数据库;

$result = mysqli_query($con,"SELECT * FROM users WHERE usertype='group_two' ORDER BY 
points DESC");
while($row = mysqli_fetch_array($result)) {
echo "<li class='select-area'><label><span>" . $row['firstname'] . "</span>";
echo "<span>" . $row['lastname'] . "</span>";
echo "<span>" . $row['points'] . "</span><span><input type='checkbox' 
name='receipient_id'
value=" . $row['id'] ." /></span></label></li>";
}

这列出了能够接收积分的用户,这很好,但如果我选择多个用户,它只会将积分发送给最后一个选中的用户,我希望它将积分发送到所有选中的用户。

我的更新查询如下;

$update_query="UPDATE users u1 JOIN users u2
ON u1.id = '$sender_id' AND u2.id= receipient_id
SET u1.points = '$sender_updated_points',
u2.points = '$receiver_updated_points';";

使用复选框选择多行进行更新时,我是否错过了任何特定的技巧?我在谷歌上搜索了大约16个小时。

您可以将复选框的name属性作为类似的数组

<input type='checkbox' name='receipient_id[]' value=" . $row['id'] ." />
                                          ^

这样,当带有选定复选框的表单发送到PHP脚本时,变量$_POST['receipient_id']将包含一个数字数组,其中包含选定复选框值,索引依次为0、1、2等。

$_POST['receipient_id'][0]将是第一个选中的复选框的值,$_POST['receipient_id'][1]将是第二个选中复选框的数值,依此类推。

你能试试吗?

如果你想发送多个值,应该在数组name="receiptient_id"到name="receipient_id[]"中

关于查询的建议

    $update_query="UPDATE users u1 JOIN users u2
    ON u2.id= u1.receipient_id
    SET u1.points = '$sender_updated_points',u2.points = '$receiver_updated_points'
    where u1.id = '$sender_id';";

这就是我如何使用与您相同的条件,但我使用它来删除从数据库中提取的多个数据

第一个在你身上。。环-将名称命名为阵列

<input type="checkbox" id="updcbx" name="updcbx[]" value="'.$row['id'].'"/>

与php提交相比,您可以使用类似的代码

if(isset($_POST['submit']))
{   
    if (is_array($_POST['updcbx']))
    {
        foreach($_POST['updcbx'] as $upd)
        {
            $update[$upd] = $upd;
            $sql = "UPDATE TABLE SET FIELD = 'value' WHERE id = '$delete[$upd]'";
            mysql_query($sql);
        }
    }
}

希望这能帮助您:)