使用" foreach"从表单中检索多个复选框。

时间:2015-05-13 15:40:51

标签: php html forms checkbox foreach

这是带有复选框的表单。我需要打印出文本,但不打印复选框的值。

  <p>Select the cinema where you saw the film<br />
    Richmond <input type="checkbox" name="cinema" value="Wimbledon" /><br />
    Kingston <input type="checkbox" name="cinema" value="Sutton" /><br />
    Feltham <input type="checkbox" name="cinema" value="Kingston" /><br />
    </p>

这是我们老师给出的带有foreach循环的响应页面,看起来它不起作用

>  <?php
>     $cinema =$_POST['cinema'];
>     
>     foreach ( $cinema as $cinemalocation) {
>              print "Cinema Location:".$cinemalocation."<br />";
>            };
>     ?>

我也不允许对表格进行调整,我一直试图找到答案几个小时。到目前为止似乎没有任何帮助。

2 个答案:

答案 0 :(得分:0)

我不相信你可以不修改表格。 GETting和POSTing表单只会发送您在value属性中的内容。

如果您能够更改表单,则可以在元素上设置ID并使用javascript。

此外,鉴于您的输入是自我关闭的

<input type="checkbox" name="cinema" value="Wimbledon" />

HTML字段中实际上没有任何内容。

更新: 鉴于你提到你的导师想要一个if elseif解决方案,也许这就是你正在寻找的东西

<?php
 $cinema =$_POST['cinema'];

 foreach ( $cinema as $cinemalocation) {
            //  print "Cinema Location:".$cinemalocation."<br />";
    if( $cinemalocation == 'Wimbledon'){
echo "Cinema Location: Richmond <br />";
}
elseif  if( $cinemalocation == 'Sutton'){
    echo "Cinema Location: Kingston <br />";
}

elseif  if( $cinemalocation == 'Kingston'){
    echo "Cinema Location: Feltham  <br />";
}

else{
echo "Cinema Location: Unknown  <br />";
}
       };
?>

答案 1 :(得分:0)

假设您可以更改给定的响应页面代码,并且假设这是一个有限的场景,只需知道所需的值,您可以这样做:

<?php
    $cinema = $_POST['cinema'];
    foreach ( $cinema as $cinemalocation) {
        if ($cinemalocation == 'Wimbledon') {
            print "Cinema Location: Richmond<br/>";
        } elseif ($cinemalocation == 'Sutton') {
            print "Cinema Location: Kingston<br/>";
        } elseif ($cinemalocation == 'Kingston') {
            print "Cinema Location: Feltham<br/>";
        }
    }
?>

再一次,这是基于提供的有限指示和信息。正如其他人所指出的那样,这不是最佳实践,甚至不是现实世界的情景。 html不会在POST中传回,即使是这样,也有更好的方法可以根据发布的选项实现值的输出。