如果可以使用复选框更改多行值?
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] => 100001, [1] = 100002 )
等等。所以 $key 是 0,$value 是 100001。这个值就是你想要的。如果您只有一个键为 [100001]、[100002] 的单级数组,那么您将不需要键=>【参考方案2】:
name="checkbox[]"
将在 $_POST["checkbox"] 中创建一个数组供您使用。该数组将包含您选择的所有复选框的值。
【讨论】:
我该怎么做? 好吧,我不会为你写代码。但分析数组所有值的最简单方法是使用us3.php.net/manual/en/control-structures.foreach.php以上是关于如果可以使用复选框更改多行值?的主要内容,如果未能解决你的问题,请参考以下文章