php - 复选框仅更新数据库中的最后一行

标签 php mysql checkbox

我似乎无法让我的复选框只更新选中的框。现在,当我选中任何框并单击提交时,它会将最后一行标记为 1(即使未选中该行)。为了发布到同一页面并更新所有选中的框,我在这里缺少什么?

while($row = mysql_fetch_array( $result )) {

$addr = $row['address'];
$info = $row['info'];
$date = $row['date'];
$status = $row['status'];
$id = $row['id'];

?>
<tr>
    <td><?php echo $id; ?></td>
    <td><?php echo $addr; ?></td>
    <td><?php echo $info; ?></td> 
    <td><?php echo $date; ?></td>
    <td><?php echo $status; ?></td>
    <td><input type="checkbox" name="handled" value="1"><br></td>
</tr>

<?php
}
?>


</table>

<?php
  if (isset($_POST['checked'])) {
    echo "Posted!";
    $sql2 = "UPDATE requests SET status = 1 WHERE id = '".$id."'";
    mysql_query($sql2) or die(mysql_error());
  }

?>

<br>
<form action="" method="post">
<input name="checked" type="submit"/>

最佳答案

您的代码容易受到 sql 注入(inject)攻击。使用 mysqli 或 PDO

在 php 中更新代码的特定部分,并将复选框放入表单中。

<?php
  if (isset($_POST)) {
    echo "Posted!";
    //uncomment print_r for debugging
    //print_r($_POST);
    if(isset($_POST['handled'])=='on')
    {
        echo "checkbox is checked for ".$id." so update the status for id";
        $sql2 = "UPDATE requests SET status = 1 WHERE id = '".$id."'";
        //do querying here
    }
    else
    {
        echo "checkbox is not checked for ".$id;
    }

  }

?>

像这样形成

<form action="" method="post">
<!-- put checkbox inside the form -->
<input type="checkbox" name="handled"/>
<input name="checked" type="submit"/>

[编辑]

关于复选框,您必须了解的一件事是未选中的复选框甚至都不会发布。假设您有一个没有值的文本框,提交时将发布空文本框,但是如果复选框未标记复选框,则帖子甚至会忽略/避免空值,在这种情况下被视为非现有元素。不会发布任何内容,甚至不会发布空值。要克服此问题,请使用带复选框的隐藏字段自动提交值,其中的复选框值通过选中或未选中复选框的 javascript onchange 进行操作。

关于php - 复选框仅更新数据库中的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32790142/

相关文章:

javascript - 如何保存输入复选框值的存储数组?

php - Wordpress 通过插件加载样式表

php - 制作一个 Web 应用程序,允许用户编辑 html 模板并将这些模板保存在服务器上

php - 如何修复php中 undefined variable

php - 编写 PHP 脚本将 JSON 转换为 PHP 数组并存储在 MySQL 中

javascript - 如何计算每个选中的复选框

php - mySQL 数据库更新后,个人资料页面未更新

mysql - 如何编写 MySQL 查询以根据其他表信息从表中检索数据?

php - 如何根据使用 PHP 和 MySQL 输入 MySQL 数据库的次数来显示更大的文本?

javascript - AngularJS - 如何在 ng-repeat 中显示日期