0

好吧,我已经按照 PHP 代码生成了一个带有单选按钮的表格,这样用户就可以在每一行中只选择一个单选按钮。但是要在每一行中只选择一个单选按钮,它必须是每一行中的唯一名称,对吗?但我不知道如何在 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

4 回答 4

2

你可以设置一个变量计数器:

$counter = 1;
while($res2 = mysql_fetch_array($sql2)){
  echo '<input type="radio" name="ch'.$counter++.'[]" value="'.$counter++.'">';
}
于 2013-09-09T17:11:51.920 回答
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而不是计数器。

于 2013-09-09T17:13:09.480 回答
0

您可以存储一个计数器$count并在每次迭代后增加它。或者,如果您在每行的数据库中有一些唯一的 id(例如 primary_key),您可以使用它来代替。$id = $res['id']

然后将该值连接到name=ch".$id."...

于 2013-09-09T17:14:22.643 回答
0

您应该使用学生姓名作为唯一数组并将该值放在 name="" 中,它将根据名称自动递增,您只能在单行选择单个选项。试试这个 :

<input type='radio' name='<?php echo $res2['sname'];?>' value='0' />&nbsp;";
<input type='radio' name='<?php echo $res2['sname'];?>' value='1' />";

这个解决方案可以工作。因为它适用于我的考勤系统。

于 2014-09-16T15:34:38.637 回答