如何从表单中提供的PHP数组中收集检查项?

时间:2014-05-19 19:42:25

标签: php arrays forms

我有一个表单,它从foreach循环构建表单项,并为每个项放置一个复选框:

<form action="nextStep.php">
<?php
foreach ($children[0] as $myPage) {
$menuname = $info[$myPage]['label'];
echo '<input type="checkbox" id="'.$menuname.'" name="reveal_menu" value="no" unchecked><label for="'.$menuname.'">'.$menuname.'</label><br>';
}
?>
<br>
<input type="submit" value="Submit">
</form>

如您所见,我从未检查的每个项目开始。我想知道的是我应该如何构建nextStep.php脚本来创建单个php变量,我可以在用户点击提交按钮后在nextStep.php页面上回显?

2 个答案:

答案 0 :(得分:1)

您必须通过在名称上附加[]来确定此输入是值数组:

echo '<input ... name="reveal_menu[]" ...>';

在nextStep.php中:

foreach($_POST['reveal_menu'] as $checkbox)
   echo $checkbox;

编辑回答OP评论:

您需要创建一个数组来处理这些值。但是$ _POST [&#39; reveal_menu&#39;]本身就是一个数组。例如,可以访问$_POST['reveal_menu'][0]

请注意,$_POST['reveal_menu']是一个只有选中值的数组。索引0并不指向表单的第一个复选框,而是从表单中选中的第一个复选框。

答案 1 :(得分:0)

每个项目都需要具有唯一值,可能是menuname,因此您可以确定哪些值已经过检查,并且名称需要在末尾附加[]运算符。

<form action="nextStep.php">
<?php
foreach ($children[0] as $myPage) {
$menuname = $info[$myPage]['label'];
echo '<input type="checkbox" id="'.$menuname.'" name="reveal_menu[]" value="$menuname" unchecked><label for="'.$menuname.'">'.$menuname.'</label><br>';
}
?>
<br>
<input type="submit" value="Submit">
</form>

循环播放时,您将获得一系列值。

<?php
  foreach($_POST['menuname'] as $v)
  {
    echo($v . 'Was checked.');
  }
?>