Answers:
将表单中的名称设置为check_list[]
,您将能够以array($_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.
}
}
?>
$check
则将等于on
。
if($_POST)
-无用,$_POST
永远是真的。您应该检查是否!empty($_POST['check_list'])
。
array_key_exists('check_list', $_POST) && !empty($_POST['check_list'])
empty()
不会导致此错误。从手册:empty() does not generate a warning if the variable does not exist.
编辑以反映@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
}
[]
字段定义中的语法时才有效,这使PHP将$ _POST值创建为数组。否则它将是一个非数组值,从而导致foreach()循环崩溃。
<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/>";
}
抱歉,旧话题了,但这是值得一提的重要内容,@ JamesRattray和其他人对此有疑问。
尝试将多个值发布到PHP脚本时,请勿自行关闭input
标签(使用/>
)。当您自行关闭标签时,它将结束数组定义,并且在提交时将只有一个值发布到脚本中。实际上,@ Scone的答案在/>
更改之前可能不会起作用。
这是导致 Warning: Invalid argument supplied for foreach() in /home1/...
在这种情况下 PHP错误的。
编辑:如下面的评论中所述,进一步的研究表明,这取决于DOCTYPE。如果您为XHTML设置了DOCTYPE,则将需要关闭输入标签。如果您具有HTML5的DOCTYPE集,则将要求不关闭输入标签。也有可能由用户在哪个浏览器中查看页面以及页面遵循代码中指定的DOCTYPE的程度来决定。
很简单 注意,您将立即得到它!:)
您将创建一个html数组,然后将其发送到php数组。您的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
你的消息S,这意味着你将echo
你的$row['Report ID']
在自己的位置。
然后,当您提交表单时,您的PHP数组将如下所示:
print_r($check_list)
[1] => checked
[3] => checked
取决于哪些检查,哪些没有。
我确定您可以从现在开始继续。
check_list[]
将始于check_list[0]
而不是check_list[1]
。
zh en ven caso necesito que venga en unsólovalor,por lo tanto no me vale una matriz。
// Primero paso las matrices del post a valores separados por coma.
foreach($_POST as $n => $v) if (is_array($v)) $_POST[$n] = implode(",", $v);
同意,我将向您提供1个月的昏迷。由于存在MySQL咨询服务,请使用以下方法:
Where id in ($_POST["id"])