我正在尝试更新选中该复选框的每一行中的状态列,来自' Ikke 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 = "SELECT * FROM t_launch ORDER BY launch_date ASC";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// Output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo '<tr>' . PHP_EOL;
echo '<td><input type="checkbox" name="betaling[]" value="' .$row["launch_id"]. '"></td>' . PHP_EOL;
echo '<td>' . $row["launch_id"] . '</td>' . PHP_EOL;
echo '<td>' . $row["launch_firstname"] . ' ' . $row["launch_lastname"] . '</td>' . PHP_EOL;
echo '<td>' . $row["launch_number"] . '</td>' . PHP_EOL;
echo '<td>' . $row["launch_email"] . '</td>' . PHP_EOL;
echo '<td>' . $row["launch_guests"] . '</td>' . PHP_EOL;
echo '<td>' . $row["launch_date"] . '</td>' . PHP_EOL;
echo '<td>' . $row["launch_status"] . '</td>' . PHP_EOL;
echo '</tr>' . PHP_EOL;
}
}
else {
echo "0 results";
}
foreach ($_POST['betaling'] as $launch_id) {
mysql_query("UPDATE `t_launch` SET `launch_status` = 'Betalt' WHERE `launch_id` = '$betaling'");
}
php的第一部分很好地列出了表格,但是在搜索了类似情况的几个小时后,我还没有能够破解第二个UPDATE部分。
我已使用静态ID测试了我的数据库中的SQL UPDATE调用,并确认它可以正常工作,但目前该页面只是更新而不更新任何内容。
在与有一些PHP经验的朋友交谈后,我们找到了解决方案:
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());
}
我们必须重新格式化数组以满足sql的要求。
注意 - 我们还修复了一些关于mysql和mysqli的语法错误(我把它们混淆了)
答案 0 :(得分:0)
查看代码,您似乎在更新函数中使用了错误的变量名称。当你应该使用$ launch_id
时,你使用$ betaling编辑:
只是想指出不推荐使用mysql_query,所以你可能想看看pdo或Mysqli。
此外,您可以使用“WHERE launch_id IN $ launch-ids”编辑一个查询中的所有行。 $ launchids应该是逗号分隔的括号之间的ID列表。
答案 1 :(得分:0)
尝试分离表单显示及其逻辑过程。
例如:将表单更改为<form method="post" action="another_file.php">
。
然后将处理全局$_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'");
}
}
然后,一旦提交了按钮,就会执行sql查询。
希望得到这个帮助。
更新:
将$betaling
更改为$launch_id
,您没有$betaling
var。