从多个复选框获取 $_ POST

我有一个表单,里面有多个复选框(每个都有代码) :

<input type="checkbox" name="check_list" value="<? echo $row['Report ID'] ?>">

其中 $row['Report ID']是数据库中的主键-因此每个值都是不同的。

我如何能够知道哪些复选框已经被选中? (也许是多个)

这是一个收件箱系统,我有一个按钮下面,我想(点击时)删除所有消息(id 的: $row['Report ID']) ,有复选框的选中。

523801 次浏览

将表单中的名称设置为 check_list[],您将能够以数组($_POST['check_list'][])的形式访问所有复选框。

这是你要的样品:

<form action="test.php" method="post">
<input type="checkbox" name="check_list[]" value="value 1">
<input type="checkbox" name="check_list[]" value="value 2">
<input type="checkbox" name="check_list[]" value="value 3">
<input type="checkbox" name="check_list[]" value="value 4">
<input type="checkbox" name="check_list[]" value="value 5">
<input type="submit" />
</form>
<?php
if(!empty($_POST['check_list'])) {
foreach($_POST['check_list'] as $check) {
echo $check; //echoes the value set in the HTML form for each checked checkbox.
//so, if I were to check 1, 3, and 5 it would echo value 1, value 3, value 5.
//in your case, it would echo whatever $row['Report ID'] is equivalent to.
}
}
?>
<input type="checkbox" name="check_list[<? echo $row['Report ID'] ?>]" value="<? echo $row['Report ID'] ?>">

在文章发布后,你可以循环浏览它们:

   if(!empty($_POST['check_list'])){
foreach($_POST['check_list'] as $report_id){
echo "$report_id was checked! ";
}
}

或者从上一页获得某个值:

if(isset($_POST['check_list'][$report_id])){
echo $report_id . " was checked!<br/>";
}

你必须相应地命名你的复选框:

<input type="checkbox" name="check_list[]" value="…" />

然后您可以访问所有选中的复选框

// loop over checked checkboxes
foreach($_POST['check_list'] as $checkbox) {
// do something
}

确保正确地转义输出(htmlspecialchars())

这很简单,集中注意力,你马上就会明白的! :)

您将创建一个 html 数组,然后将其发送到 php array。 您的 html 代码将如下所示:

<input type="checkbox" name="check_list[1]" alt="Checkbox" value="checked">
<input type="checkbox" name="check_list[2]" alt="Checkbox" value="checked">
<input type="checkbox" name="check_list[3]" alt="Checkbox" value="checked">

其中 [1] [2] [3]是您的消息的 ID,这意味着您将 echo您的 $row['Report ID']在他们的地方。

然后,当您提交表单时,您的 PHP 数组将如下所示:

print_r($check_list)

[1] = > 检查 [3] = > 勾选

取决于哪些被检查了,哪些没有。

我相信从现在开始你可以继续。

编辑 以反映@Marc 在下面评论中所说的话。

您可以对所有提交的值执行循环。

HTML:

<input type="checkbox" name="check_list[]" value="<?=$rowid?>" />
<input type="checkbox" name="check_list[]" value="<?=$rowid?>" />
<input type="checkbox" name="check_list[]" value="<?=$rowid?>" />

PHP:

foreach($_POST['check_list'] as $item){
// query to delete where item = $item
}