我正在尝试制作一个随机锦标赛生成器,在这里我可以从带有复选框的列表中选择名称,然后将其随机排列为不同的顺序。
我的格式如下:
<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。我想在屏幕上显示所有名称,因此我可以开始将它们随机化。我该怎么办?
答案 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[]"
即可。