【问题标题】:Retrieving multiple check boxes from a form with a "foreach"从带有“foreach”的表单中检索多个复选框
【发布时间】:2015-05-14 00:08:16
【问题描述】:

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

  <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 />";
>            };
>     ?>

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

【问题讨论】:

  • 除非您有一个数组或数据库或其他东西来查找从值到文本的关系,否则您需要修改表单以获取文本。
  • 我同意。周围的 html 没有被传递给表单处理程序,因此不可用。
  • 但如果是学校作业(老师提到),在这种有限的情况下,您可以构建一个简单的 if-else 结构来完成作业。

标签: php html forms checkbox foreach


【解决方案1】:

假设您可以更改给定的响应页面代码,并且假设这是一个已知所需值的有限场景,您可以执行以下操作:

<?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 中传回,即使是这样,也有更好的方法可以根据发布的选择来实现值的输出。

【讨论】:

    【解决方案2】:

    鉴于您无法修改表单,我认为这是不可能的。 GET 和 POST 表单只是发送你在 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 />";
    }
           };
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-14
      • 2021-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多