这是我的表格:
id | name | check
------------------
1 | Paul | no
2 | Bob | no
3 | Tom | no
id是INT、name和check TEXT。
脚本如下:
<?php
include("database.php");
$dbc= new dbClass();
$query = $dbc->dbRunSql("select * from names order by name");
while ($result = mysql_fetch_array($query)){ ?>
<form method="POST" action="">
<input type="checkbox" name="names[]" value="yes"/><?php echo $result['name'];
} ?>
<br>
<input name="submit" type="submit" />
</form> <?php
if(isset($_POST["submit"])){
foreach ($_POST['names'] as $entry){
$dbc= new dbClass();
$query = $dbc->dbRunSql("update `names` set `check`='$entry';");
}
}
?>
这个脚本工作,但更新所有的行,而不是我检查的那些。
我有两个问题:1)我应该改变什么使它正常工作?(更新我检查的那些)
2)那些我不检查的,如何在"检查"栏中将它们更新为"否"
我希望你能理解我的意思。
您应该在查询中使用WHERE子句。你当前拥有的更新每一行,因为MySQL不知道要更新什么。这是对该问题的修复:
$query = $dbc->dbRunSql("update `names` set `check`='$entry' WHERE id='$id';");
$id
需要由您正确定义,像这样:
<input type="checkbox" name="names[<?php echo $result['id']; ?>" value="yes"/>
然后在foreach循环中:
foreach ($_POST['names'] as $id => $entry){