我一直在想办法做到这一点。我希望用户可以检查项目,点击提交,然后转到下一页的代码,并从数据库中删除所有已检查的项目。问题一是在帖子中它只发送最后一个检查项目。以下是我现在的设置。
echo "<form name='fm1' METHOD ='POST' ACTION ='displaydelete.php' > ";
//绘制表头 echo“”; echo“”; 回声“基金号”; 回声“小时”; 回声“百分比”; 回声“删除”; echo“”; //有查询结果时,数据被推送到表格单元格中 while($ row = mysql_fetch_array($ queryResult2)) { $ hours = $ row ['hours']; $ percentage = $ hours / 160 * 100;
echo "<tr>";
echo "<td>";
echo $row['funnumber'];
echo "</td>";
echo "<td>";
echo $hours;
echo "</td>";
echo "<td>";
echo $percentage ."%";
echo "</td>";
echo "<td>";
echo "<input type='checkbox' name='id' value='$row[id]'/>";
echo "</td>";
echo "</tr>";
}
//End of tabel
echo "</table>";
回声“”;
echo“”;
我想要做的是将所有项目推送到变量中,并可能以这种方式删除它们。我不确定你将如何处理多个删除。如果这对任何事情有帮助的话,我正在做这样的删除。
$query = "DELETE FROM users
WHERE ninenumber ='$ ninenumber'“; $ result = mysql_query($ query) 或者死(“查询失败:”。mysql_error());
mysql_close($conn);
答案 0 :(得分:3)
以您的形式:
<input type='checkbox' name='id[]' value='$row[id]'/>
然后,在您发布到的文件中:
if(is_array($_POST['id'])){
foreach($_POST['id'] as $id){
...do something to $id;
}
}
答案 1 :(得分:2)
而不是:
echo "<input type='checkbox' name='id' value='$row[id]'/>";
你需要这个:
echo "<input type='checkbox' name='id[]' value='$row[id]'/>";
注意区别。我在输入名称后添加了[]
。这告诉客户端和服务器有多个具有该名称的输入。 $_POST['id']
将是您可以在下一页上循环的数组。
foreach ($_POST['id'] as $checkbox) {
// DELETE FROM users WHERE ninenumber = $checkbox
}
为简洁起见,省略了 isset
,is_array
和mysql_real_escape_string
。
答案 2 :(得分:1)
在生成表单的代码中,让html中的名称后跟“[]”:
...
echo "<input type='checkbox' name='id[]' value='$row[id]'/>";
...
然后,在表单阅读代码中,你的post'ed id将是一个数组。
$id_array = isset($_POST['id']) && is_array($_POST['id']) ? $_POST['id'] : array();
foreach( $id_array as $id ) {
$query = "DELETE FROM users WHERE ninenumber = '" . mysql_real_escape_string($id) . "'";
// execute the delete query
}
答案 3 :(得分:0)
将[]
放在控件名称之后会将其转换为超全局中的数组,然后您可以迭代以获取所有值。
答案 4 :(得分:0)
您需要为所有复选框指定相同的名称,然后将所有值作为数组POST变量传递。
<input type='checkbox' name='id[]' value='$row[id]'/>
答案 5 :(得分:0)
更改
name=id
到
name=id[]
然后会给你一个数组。