如何在POST中发送多个复选框检查以从数据库中删除?

时间:2010-12-01 17:07:24

标签: php mysql html

我一直在想办法做到这一点。我希望用户可以检查项目,点击提交,然后转到下一页的代码,并从数据库中删除所有已检查的项目。问题一是在帖子中它只发送最后一个检查项目。以下是我现在的设置。

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);

6 个答案:

答案 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
}
为简洁起见,省略了

issetis_arraymysql_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[]

然后会给你一个数组。