我有一个显示我的数据库信息的页面。 通过每个循环,打印一个复选框,如果选中并提交,则删除关联的条目。 复选框名称为"delete[]",并且包含行 id 的隐藏值名为"id[]"。
这是我表格的相关部分:
<tr><td valign='top'>
<label class='amarillo med' style='color:#C00;'>Delete Section </label>
<input type='checkbox' name='delete[]' />
<input type='hidden' name='id[]' value='" . $row['about_id'] . "' />
</td></tr>
这是我的 php 和查询
$deleteCount = count($_POST['delete']);
for ($x = 0; $x < $deleteCount; $x++) {
if(isset($_POST['delete'][$x])) {
$sql = 'DELETE FROM about WHERE about_id = '''.$_POST['id'][$x].'''';
$result = mysql_query($sql);
}
}
这就是发生的事情。
如果返回三行,而我只想删除第三行,则选中第三行并单击提交。 这将删除返回的第一行。 同样,如果返回三行并且我想删除第一行和第三行,则提交并删除前两行。
看起来正在发生的事情是,对于选中的每个复选框,从第一个开始删除许多行。 任何建议将不胜感激。
最好和更简单的方法是使用
<input type="checkbox" name="delete[]" value="<?=$row['about_id']?>"/>
然后
foreach($_REQUEST['delete'] as $delID)
{
...
}
使用以下代码
<tr><td valign='top'>
<label class='amarillo med' style='color:#C00;'>Delete Section </label>
<input type='checkbox' name='delete[$row['id']]' />
<input type='hidden' name='id[$row['id']]' value='" . $row['about_id'] . "' />
</td></tr>
其中 $row['id'] 是行的 id