PHP SQL:如果选中复选框,则更新多行的值

PHP SQL:如果选中复选框,则更新多行的值,php,sql,database,Php,Sql,Database,我正在尝试更新复选框选中的每一行中的状态列,从“ike Betalt”到“Betalt”,同时使用提交按钮。基本上,这是一个活动参与者的列表,我希望在他们付款后能够“核对”他们 见表: 我的代码 <form method="post"> <table> <thead> <tr> <td>Betalt?</td> <td>

我正在尝试更新复选框选中的每一行中的状态列,从“ike Betalt”到“Betalt”,同时使用提交按钮。基本上,这是一个活动参与者的列表,我希望在他们付款后能够“核对”他们

见表:

我的代码

<form method="post">
<table>
    <thead>
        <tr>
            <td>Betalt?</td>
            <td>Id</td>
            <td>Navn</td>
            <td>Nummer</td>
            <td>Email</td>
            <td>Antal Gæster</td>
            <td>Dato</td>
            <td>Status</td>
        </tr>
    </thead>
    <tbody>
        <?php include 'deltagere.php'; ?>
    </tbody>
</table>
<p><button name="submit" type="submit" value="submit">Opdater</button></p>
</form>
我们必须重新格式化数组以满足sql的要求


注意-我们还修复了一些关于mysql和mysqli的语法错误(我把它们弄混了)

查看您的代码,您似乎在更新函数中使用了错误的变量名。当您应该使用$launch\u id时,您可以使用$betaling

编辑:

我只想指出,mysql_查询已被弃用,所以您可能想看看pdo或Mysqli


此外,您还可以使用“WHERE launch_id in$launch id”编辑一个查询中的所有行$LaunchID应该是括号之间以逗号分隔的ID列表

尝试将表单显示与其逻辑过程分开

例如:将表单更改为

然后将处理全局
$\u POST
变量的脚本剪切到新文件中。应该是:

<?php
if (isset($_POST) && isset($_POST['betaling']) && !empty($_POST['betaling']) {
  foreach ($_POST['betaling'] as $launch_id) {
    mysql_query("UPDATE `t_launch` SET `launch_status` = 'Betalt' WHERE `launch_id` = '$betaling'");
  }
}

我尝试了一下-这只返回一个HTTP错误500。实际上我确实试过,但我认为我的代码是伪造的
需要检查
mysql\u查询(“更新…”
,当然,还包括db配置文件(定义为
$conn
)更新脚本从未工作过。其语法为:
mysqli\u查询($con,$query)
感谢您的帮助-您使用WHERE IN的想法真的很有帮助,我们已经解决了!完整的解决方案在我的帖子顶部。请将您的解决方案移至自己的答案,谢谢。
if(isset($_POST['checkednames'])) {
    $ids = join(', ', $_POST['checkednames']);
    mysqli_query($conn, "UPDATE `t_launch` SET `launch_status` = 'Betalt' WHERE `launch_id` IN ($ids)") or die(mysql_error());
    }
<?php
if (isset($_POST) && isset($_POST['betaling']) && !empty($_POST['betaling']) {
  foreach ($_POST['betaling'] as $launch_id) {
    mysql_query("UPDATE `t_launch` SET `launch_status` = 'Betalt' WHERE `launch_id` = '$betaling'");
  }
}