我有一个类似下面的PHP代码,用一个复选框和一个表来查看所有玩家的选择:
<?php
$players = $crud->readPlayers();
if (mysql_num_rows($players) > 0)
{
while ($row = mysql_fetch_array($players))
{
?>
<tr>
<td><input type="checkbox" name="player[]" value="<?php echo $row['player_code'] ?>"></td><td> <?php echo $row['player_name'] ?></td>
</tr>
<?php
}
}
else{
?><tr><td colspan="2"><center>No to select. Please add before creating a team!</center></td></tr>
<?php
}
?>
此表单由另一页处理:
if(isset($_POST['player'])){
$i=1;
foreach($_POST['player'] as $player_code){
$crud->addTeam($team_id, $player_code,$i++);
}
其中传递给addTeam()
的第三个参数应该是玩家的顺序,或分配给玩家的数字。虽然我得到了团队中所有选定的玩家,但我可以从终端查看团队和玩家,我无法正确选择复选框的顺序,也就是说,如果复选框旁边打印有玩家名称'a'的复选框在名称为'b'的名称之后选择,它应该得到数字2,而不是1。
然后,我必须按照球员号码的递增顺序列出整个球队。 player_code
用于在另一个表中存储玩家详细信息,并且可以相应地改变,即名为“a”的玩家不需要将player_code
设置为1。
如何获取这些复选框的选择顺序并相应地为玩家分配编号,而不使用除HTML和PHP之外的任何内容?
答案 0 :(得分:0)
我建议在复选框选中/点击事件中添加JavaScript。 因此,每次用户单击一个chk,您可以将玩家名称存储在另一个字段中(可能隐藏?)。 通过这种方式,您将在该隐藏字段中按照它们被单击的确切顺序生成一个播放器名称列表。
答案 1 :(得分:0)
浏览器还会按照格式的顺序提交表单数据。没有关于选择了哪些订单控件的信息。
简单的HTML方法是使用单选按钮的网格。例如每行代表一个玩家,每列代表一个位置。
你需要编写PHP来验证提交的数据,以确保任何给定的播放器都没有多次被选中。
或者,您可以要求一次选择一个播放器(并提交给服务器)。
每次提交表单时,都会返回一个新表单,其中所选的播放器列在隐藏的输入中,并从给予用户的选项中省略。
但这可能会相当缓慢。
违反HTML + PHP限制,您可以使用JavaScript。
在复选框上侦听点击事件,并将值存储在隐藏的输入中(例如,以逗号分隔的列表)。