如果可以使用复选框更改多行值?

Posted

技术标签:

【中文标题】如果可以使用复选框更改多行值?【英文标题】:If it possible to changed multiple rows value using checkbox? 【发布时间】:2013-11-25 11:56:07 【问题描述】:

当我选中复选框时是否可以在我的数据库中编辑我的状态字段?

我想要的是,当我检查表中的多行时,它会在我提交后自动将数据库中 row['status'] 的值更新为 yes。

就这样,

餐桌APP

counter | status

100001  | 
100002  | 
100003  |   
100004  | 

当我检查 100001 和 100002 时,status 的值变为 yes。

counter | status

100001  | yes
100002  | yes
100003  |   
100004  | 

下面是我的短代码。

<form name="form1" method="post" action="">
<?php
$mysqli = new mysqli("localhost", "root", "", "app");
$result1 = $mysqli->query("SELECT * FROM APP");
echo'<table id="tfhover">
<tr>
<th>status</th>
<th></th>
</tr>';
while($row = $result1->fetch_assoc())
echo
'<tr>
<td>'.$row['status'].'</td>
<td><input name="checkbox[]" type="checkbox" id="checkbox[]" value="'.$row['counter'].'"></td>
</tr></table>';
?>
<input id='edit' type='submit' class='button' name='edit' value='Edit'/> 
</form>

<?
if(isset($_POST['edit'])) 



?>

如果可以做到这一点?帮忙?

【问题讨论】:

【参考方案1】:

也许你可以试试这个代码 在 php

<?
if(isset($_POST['edit'])) 

     if(is_array($_POST['checkbox']))
         $status = "yes";
         foreach($_POST['checkbox'] as $key=>$value)
             $stmt = $mysqli->prepare("UPDATE APP SET status=? WHERE counter= ?");
             $stmt->bind_param('ss', $status, $value);
             $stmt->execute();             
         
     else
         echo "No changes";
     

?>

【讨论】:

为什么不使用foreach?这也不会验证用户输入,因此它可能容易受到 SQL 注入的影响。 @Hans:你应该对数组使用foreach,自己做一个计数器没有意义。你也不需要$checked_counter,你可以根据你的使用方式来计算$_POST['checkbox']。 @OP:我建议您清理用户输入,以便此代码不会带来安全风险。就目前而言,有人可以提交 SQL 注入并删除您的整个数据库。您还应该学习基础知识而不是复制粘贴,这样您才能了解代码在做什么。 @Devon 如果是这样,你会帮我为每个人使用吗? 我在大约 45 分钟前添加了一个关于 foreach 外观的编辑。必须对其进行审查。看起来 Hans 添加了验证以防止 SQL 注入。我仍然认为您需要研究 foreach 并自己学习。但是 foreach 会是更小的代码,而且几乎总是,更小的代码 = 更快更好。 没问题。乐意效劳。我相信当查看 $_POST["checkbox"] 时(你可以用print_r($_POST['checkbox']); 测试它)你会看到它是:array( [0] =&gt; 100001, [1] = 100002 ) 等等。所以 $key 是 0,$value 是 100001。这个值就是你想要的。如果您只有一个键为 [100001]、[100002] 的单级数组,那么您将不需要键=>【参考方案2】:

name="checkbox[]" 将在 $_POST["checkbox"] 中创建一个数组供您使用。该数组将包含您选择的所有复选框的值。

【讨论】:

我该怎么做? 好吧,我不会为你写代码。但分析数组所有值的最简单方法是使用us3.php.net/manual/en/control-structures.foreach.php

以上是关于如果可以使用复选框更改多行值?的主要内容,如果未能解决你的问题,请参考以下文章

防止更改复选框值[重复]

如果在百里香中选中复选框,如何更改布尔值?

使用innerHTML根据复选框更改div值

如何更改多个填充的复选框输入字段值?

如何使用 rhansontable 和复选框更改某些行的颜色?

将控件值(多行文本框、NumericUpDowns、复选框)保存到文件/从文件中加载