【问题标题】:Form with checkboxes getting all checked checkboxes带有复选框的表单获取所有选中的复选框
【发布时间】:2019-03-11 21:45:14
【问题描述】:

我正在尝试制作一个随机锦标赛生成器,我可以在其中从带有复选框的列表中选择名称,然后将它们随机化为不同的顺序。

我有以下表格:

<form method="post" action="<?php echo ROOT ?>HomeController/createTournament/" enctype="multipart/form-data">
 <div class="form-group">
        <label for="participants">Select participants</label><br>
            <?php foreach($players as $p): ?>
                <input type="checkbox" name="participants" value="<?php echo $p['name'];?>"> <?php echo $p['name'];?><br>
            <?php endforeach; ?>
    </div>
    <button type="submit" class="btn btn-primary btn-block" name="create">Show participants</button>
</form>

此表单显示的是一个复选框,复选框后面是参与者的姓名。

这是我的方法:

 public function createTournament() {
    if(isset($_POST["create"])) {
        $participants = $_POST['participants'];
    } 
    include('app/views/showTournament.php');
}

这意味着我将选中的那些保存到 $participants 中,对吗?

在文件 showTournament 中,我知道可以访问 $partipants。 我尝试 var_dump $particpants 并显示:

string(6) "Onlyoneselected name"

所以我尝试了一个 foreach,以获取所有选定的名称。

 <?php 
foreach($participants as $p) {
    echo $p;
}
;?>

foreach 没有显示任何内容,但文件可以访问 $participants。我想要屏幕上的所有名字,所以我可以开始随机化它们。我做错了什么?

【问题讨论】:

  • name="participants" 更改为name="participants[]"
  • 当然,谢谢!

标签: php foreach


【解决方案1】:
<input type="checkbox" name="participants"

这里的这一行是你问题的根源。

因为每个复选框都有相同的名称,$_POST['participants'] 的值会被列表中的每个复选框覆盖。

如果你把 sn-p 改成:

<input type="checkbox" name="participants[]"

然后$_POST['participants'] 成为所有检查值的数组。

【讨论】:

    【解决方案2】:

    您需要多个复选框值。

    因此,输入的 HTML 名称应该是多个(数组)

    &lt;input type="checkbox" name="participants" 将返回字符串,仅返回最新提交的值。

    &lt;input type="checkbox" name="participants[]" 将返回所有提交值的数组。

    因此,将 name="participants" 替换为 name="participants[]" 即可。

    【讨论】:

      猜你喜欢
      • 2016-11-06
      • 2017-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      相关资源
      最近更新 更多