在Php中我们都知道,Asp.Net的GridView等没有内置的控件。我使用Html的<table>
来构建网格并将行的id保存在一个隐藏的字段中。我还在每行的开头放置了一个复选框,在网格底部放置了一个删除按钮。我面临的问题是,如何获取所有被检查的ID,以便我可以在IN
的{{1}}子句中传递这些ID?
答案 0 :(得分:1)
看看目前正在提交的内容:
var_dump($_POST);
您将看到所有字段值。如果你选中右边的复选框,你就会有一个要删除的rowID数组,你可以在构建查询时简单地内爆(',',$ _ POST ['checkBoxes'])或类似内容。
安全性在这里会引起关注......我确信其他人会对此进行深入介绍,但您肯定想验证用户是否可以删除这些记录。
答案 1 :(得分:1)
使用半唯一名称tablerow[numeric_id]
为每个复选框命名。提交表单时,您只需捕获已检查的所有已发布的tablerow
值。
答案 2 :(得分:0)
首先,您可以通过在其名称中添加[]
后缀来命名所有复选框,以便创建一个数组,稍后您将获得如何检查并执行相应操作的方法:
for($i = 0; $i < count($_POST['checks']); $i++)
{
if (isset($_POST['checks'][$i]))
{
// this was checked !!
}
}
其中checks
是所有这些复选框的名称,例如:
<input type="checkbox" name="checks[]" value="1" />
<input type="checkbox" name="checks[]" value="2" />
<input type="checkbox" name="checks[]" value="3" />
这就是您在查询中获取IN
子句的方法:
$checked_array = array();
for($i = 0; $i < count($_POST['checks']); $i++)
{
if (isset($_POST['checks'][$i]))
{
$checked_array[] = mysql_real_escape_string($_POST['checks'][$i]);
}
}
// build comma separated string out of the array
$values = implode(',', $checked_array);
现在,您可以在查询的$values
子句中使用IN
。