根据选中的复选框删除表条目

时间:2013-02-24 14:52:50

标签: php database

我有一个项目列表,每行都有一个复选框。每个复选框都有一个唯一的名称,如“65”或“77”,对应于数据库中的item_ID。我希望能够

DELETE FROM $table WHERE "name of checkbox"=item_ID AND "checkbox is checked"

基本上删除与该表行中勾选复选框对应的任何数据条目。 复选框按原样构造并显示在每一行的末尾:

$field=mysql_fetch_assoc($result);
$ID=$field['item_ID'];

<input name='".$ID."' type='checkbox' value='yes'>

3 个答案:

答案 0 :(得分:0)

将其名称设置为$ ID [],并在服务器端对$ _REQUEST [$ ID]执行foreach循环。

答案 1 :(得分:0)

因为在Form中只有复选框是通过POST发布的,所以你需要通过一个小技巧解决这个问题。对于每个条目,在您的html代码中添加一个隐藏字段,如

<input type='hidden' name='ids[]' value='".$ID."'>
<input name='checkbox_".$ID."' type='checkbox' value='yes'>

将这些内容发布到您的服务器后,您应该拥有包含已显示给您的用户的所有行的数组$ _POST ['ids']。所以迭代它并检查是否存在相应的复选框索引:

foreach($_POST['ids'] as $checkId) {
    if(array_key_exists('checkbox_'.$id, $_POST) {
         // delete the entry
         $sql = 'delete from your_table where id = "'.$id.';"';
         // execute sql
    }
}

答案 2 :(得分:0)

另一招:

<form>
<input type="checkbox" name="checkbox_$iID">
...
</form>

foreach ($_POST as $post) {
$temp=explode('_',$post);
if ($temp[0]=="checkbox") {delete $temp[1]....}
}