为什么我不能使用复选框删除多个值?

时间:2014-04-13 15:59:56

标签: php arrays

我不知道我在这里做错了什么,但我无法从数据库中删除多个值。

我有一个包含数据库表中所有值的html表,并且我插入了一个按钮来删除某一行。

但是这个按钮不起作用,我不知道为什么。

我使用MVC结构,但我遵循自己的规则。

我在视图上做了类似的东西(我无法发布原始代码,抱歉)

function print($valuearray){ //calling the function

<table> //html table here
<tr>
  <td>ID</td>
  <td>Delete</td> 

foreach($valuearray as $key){   

echo "
<form method='POST'> //form to delete the values

<td> ".$key['id']."</td>

<td><input name='checkbox[]' type='checkbox'/></td>

<input type='submit' name='delete' />
</form>";

我在模特身上做了类似的事情

function function(){

   $sql = ("SELECT * FROM mytable");
   $result = mysql_query($sql);

if(isset($_POST['delete']))
{
    $checkbox = $_POST['checkbox'];

for($i=0;$i<count($checkbox);$i++){

$del_id = $checkbox[$i];
$sql = "DELETE * FROM mytable WHERE id ='$del_id'";
$result = mysql_query($sql);
}

}

  print($valuearray);


}

3 个答案:

答案 0 :(得分:0)

您从不打扰在复选框标记上设置value,因此您基本上将NOTHING发送回服务器。

你应该有

<input name='checkbox[]' type='checkbox' value="$key[id]">
                                        ^^^^^^^^^^^^^^^^^-- need this

答案 1 :(得分:0)

这是一个HTML问题。

您必须提供名称和值的复选框:

<input type="checkbox" name="delete[]" value="<?=$key['id']?>" />

请注意,复选框的名称为“delete []”,而不是“delete”。

在你的php部分,你应该检查$ _POST ['delete']是否存在:

if(isset($_POST['delete']) && !empty($_POST['delete'])) {

在foreach $ _POST ['delete']值之后 - 使用单独的删除语句;

foreach($_POST['delete'] as $delete_id) {
    $sql = 'DELETE FROM mytable WHERE id="'.$delete_id.'" LIMIT 1';
}

请注意,LIMIT 1部分 - 如果删除smth,它可以限制您的查询。在这种情况下,您将从表中删除最多1行。

如果是php&amp; mysql数据库 - 您可能希望使用带有mysqli连接器的预准备语句。但是,这是另一个问题。

或者将它们全部加入一个查询中,这是一种更好的方法。

$sql = 'DELETE FROM mytable WHERE id in (1,2,3,4,5);'
mysql_query($sql);

WHERE 1,2,3,4,5 - 是delete_ids。

答案 2 :(得分:0)

你应该试试 -

<input type='checkbox' value='".$key['id']."' name='checkbox[]' id='checkbox'>;

并从删除查询中删除*并使用此 -

<?php
$result = mysql_query("DELETE FROM q1 WHERE id ='".$del_id."'");
?>

我已经尝试过它并且工作正常。