带有复选框的表格获取所有选中的复选框

时间:2019-03-11 13:41:21

标签: php foreach

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

我的格式如下:

<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');
}

这意味着我要将选中的项保存到$ participant中,对吗?

在文件showTournament中,我知道可以访问$ partipants。 我尝试var_dump $ particpants,它告诉我:

string(6) "Onlyoneselected name"

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

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

foreach没有显示任何内容,但是该文件可以访问$ participant。我想在屏幕上显示所有名称,因此我可以开始将它们随机化。我该怎么办?

2 个答案:

答案 0 :(得分:4)

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

这行是您问题的根源。

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

如果您将该代码段更改为:

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

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

答案 1 :(得分:1)

您需要多个复选框值。

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

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

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

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