好吧,我遵循Php代码生成带有单选按钮的表格,这样用户只能在 EVERY 行中选择一个单选按钮。但是要在每个行中只选择一个单选按钮,它必须是 EVERY 行中的唯一名称,对吗?但我不知道如何在while循环中设置一个唯一的名称。你们能给我任何想法或解决方案吗?
Php代码:
$action = htmlspecialchars($_SERVER['PHP_SELF'])."?class=$class_from";
echo "<form method='post' action='$action' name='attendence'/>";
echo "<table width='100%' cellpadding='0' cellspacing='0' border='0'>";
echo "<tr>";
echo "<td class='tdhead' valign='top' width='200'><b>Student Name</b></td>";
echo "<td class='tdhead' valign='top' width='250'><b>Roll No</b>
</td>";
echo "<td class='tdhead' valign='top' width='250'><b>Class Name</b>
</td>";
echo "<td class='tdhead' valign='top' width='200'><b>Present / Not present</b>
</td>";
echo "<td class='tdhead' valign='top' width='200'>Check All <input type= 'checkbox'
onclick='checkAll(this)' /></td>";
echo "</tr>";
while($res2 = mysql_fetch_array($sql2))
{
$sname = inputvalid($res2['sname']);
$roll = inputvalid($res2['roll']);
$class = inputvalid($res2['class']);
echo "<tr>";
echo "<td class='tdhead2' valign='top'>$sname</td>";
echo "<td class='tdhead2' valign='top'>$roll</td>";
echo "<td class='tdhead2' valign='top'>$class</td>";
echo "<td class='tdhead2' valign='top'>
<input type='radio' name='ch[]' value='1' /> <input type='radio' name='ch[]'
value='1' />
</td>";
echo "<td class='tdhead2' valign='top'> </td>";
echo "</tr>";
}
echo "<tr>";
echo "<td class='tdhead2'> </td>";
echo "<td class='tdhead2'> </td>";
echo "<td class='tdhead2'> </td>";
echo "<td class='tdhead2'> </td>";
echo "<td class='tdhead2'><input type='submit' value='Record' name='Submit'
class='submit' /></td>";
echo "</tr>";
echo "</table>";
echo "</form>";
感谢您的帮助。
更新
echo "<td class='tdhead2' valign='top'>";
echo '<input type="radio" name="ch'.$counter++.'[]" value="1">';
echo " ";
echo '<input type="radio" name="ch'.$counter.'[]" value="0">';
echo "</td>";
答案 0 :(得分:2)
你可以设置一个变量计数器:
$counter = 1;
while($res2 = mysql_fetch_array($sql2)){
echo '<input type="radio" name="ch'.$counter++.'[]" value="'.$counter++.'">';
}
答案 1 :(得分:0)
您可以为每行设置名称ch[]
,而不是仅将名称设为ch[SOME_UNIQUE_VALUE]
。通常使用类似id号的东西。也许$roll
如果这对每个学生来说都是独一无二的。这也可以让你知道单选按钮属于哪个id。在表单提交时,您可以foreach($_POST['ch'] as $id=>$value)
并获取ID。
编辑:
示例代码:
//start the counter variable
$counter = 1;
while($res2 = mysql_fetch_array($sql2))
{
$sname = inputvalid($res2['sname']);
$roll = inputvalid($res2['roll']);
$class = inputvalid($res2['class']);
echo "<tr>";
echo "<td class='tdhead2' valign='top'>$sname</td>";
echo "<td class='tdhead2' valign='top'>$roll</td>";
echo "<td class='tdhead2' valign='top'>$class</td>";
echo "<td class='tdhead2' valign='top'>";
//echo each radio with the counter for this row
echo "<input type='radio' name='ch_{$counter}[]' value='0' /> ";
echo "<input type='radio' name='ch_{$counter}[]' value='1' />";
echo "</td>";
echo "<td class='tdhead2' valign='top'> </td>";
echo "</tr>";
//add one to the counter
$counter++;
}
请注意,除非您确实喜欢我上面提到的建议,否则您将无法知道每个广播组都去哪个学生。您可以假设第1行组中的单选按钮属于第1行中的学生,但您可能不知道第1行中的哪个学生。这就是为什么我建议您使用每个单选按钮为每个学生添加唯一ID而不是一个柜台。
答案 2 :(得分:0)
您可以存储计数器$count
并在每次迭代后增加它。或者,如果每行数据库中有一些唯一的id(例如primary_key),则可以使用它。$id = $res['id']
然后将该值连接到name=ch".$id."...
答案 3 :(得分:0)
您应该将学生姓名用作唯一数组,并将该值放在名称=&#34;&#34; 它将根据名称自动递增,您只能在单行中选择单个选项。 试试这个:
<input type='radio' name='<?php echo $res2['sname'];?>' value='0' /> ";
<input type='radio' name='<?php echo $res2['sname'];?>' value='1' />";
这个解决方案会起作用。因为它在考勤系统中适合我。