php中的唯一无线电名称while循环

时间:2013-09-09 17:07:22

标签: php html

好吧,我遵循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' />&nbsp;<input type='radio' name='ch[]' 
value='1' />
</td>";                     
echo "<td class='tdhead2' valign='top'>&nbsp;</td>";                
echo "</tr>";               

}

echo "<tr>";                
echo "<td class='tdhead2'>&nbsp;</td>";
echo "<td class='tdhead2'>&nbsp;</td>";
echo "<td class='tdhead2'>&nbsp;</td>";             
echo "<td class='tdhead2'>&nbsp;</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 "&nbsp;";
echo '<input type="radio" name="ch'.$counter.'[]" value="0">';
echo "</td>";                       

4 个答案:

答案 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' />&nbsp;";
    echo "<input type='radio' name='ch_{$counter}[]' value='1' />";

    echo "</td>";
    echo "<td class='tdhead2' valign='top'>&nbsp;</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' />&nbsp;";
<input type='radio' name='<?php echo $res2['sname'];?>' value='1' />";

这个解决方案会起作用。因为它在考勤系统中适合我。