我正在进行员工评估系统,现在我正在评估表管理中。
要显示评分标准,我使用do while循环[单选按钮包含在循环中]。 这是我的代码:
<fieldset>
<table border="1">
<tr><br />
<th width="700px">AREAS TO RATE</th>
<th width="100px">1</th>
<th width="100px">2</th>
<th width="100px">3</th>
<th width="100px">4</th>
</tr>
<?php
$rates="select * from tbl_torateareas;";
$raters=mysqli_query($con,$rates);
$raterows=mysqli_fetch_array($raters);?>
<?php do{?>
<tr>
<td><?php echo $raterows['torateareas'];?></td>
<th><input type="radio" name="rad" /></th>
<th><input type="radio" name="rad" /></th>
<th><input type="radio" name="rad" /></th>
<th><input type="radio" name="rad" /></th>
</tr>
<?php }while($raterows=mysqli_fetch_array($raters)); ?>
</table>
</fieldset>
要选择一个单选按钮,我将所有单选按钮命名为[name is: rad ]。当我这样做时,整个表只选择了一个单选按钮。就像在我的表中 10行 - 只选择了1个单选按钮,据说是每行一个单选按钮。 Hmmmmmmm。
请帮助。谢谢!
答案 0 :(得分:2)
在循环中添加一个计数器。
您正在为所有单选按钮分配相同的name
,这就是它们相同的原因。
<?php do{
$i=0;
?>
<tr>
<td><?php echo $raterows['torateareas'];?></td>
<th><input type="radio" name="rad[<?php echo $i;?>]" /></th>
<th><input type="radio" name="rad[<?php echo $i;?>]" /></th>
<th><input type="radio" name="rad[<?php echo $i;?>]" /></th>
<th><input type="radio" name="rad[<?php echo $i;?>]" /></th>
</tr>
<?php
++$i
}while($raterows=mysqli_fetch_array($raters)); ?>
<tr>
<td><?php echo $raterows['torateareas'];?></td>
<th><input type="radio" name="rad[<?php echo $i;?>]" /></th>
在提交的无线电代码中,循环显示已发布的值。
像:
<?php
if (! empty($_POST['rad'])) {
$j=0;
foreach ($_POST['rad'] as $rad) {
// Access your radio buttons code here.
++$j;
}
}
?>
答案 1 :(得分:2)
@MarcoMura是对的。例如。创建adittional变量$ i = 0,将每个循环递增并将其添加到您的名称中,如第一行中的rad0,第二行中的rad1等等。
虽然@Pupil expanded my answer并要求将其标记为解决方案,但我知道更有用。我们的想法是使用非增量数字,但id
(或者可能是element_id
,或者如何在数据库中调用此列),这可能是使用select * from tbl_torateareas;
从数据库中提取的1}} p>
因此具体输入看起来像
<input type="radio" name="rad[<?php echo $raterows['id'];?>]" />
它为您提供了一个优势,您将确切地知道数据库中的哪个记录被评级,而不仅仅是您的html表中的行序列号。这有助于避免在表格提交之前DB中的表格发生变化时出错。
另一条建议:
1 。如果您使用PHP 5.4+或<?=
{{3},您可以使用<?php echo
代替short_open_tag = yes
来提高代码的可读性}。
<强> 2 即可。混合td
和th
这里是不合理的,除非你制作第一个单元格th
,因为它是一个标题,而所有其他单元格td
,尽管它仍然有效
第3 即可。你的循环过于繁琐,你不需要先获取结果,然后等到最后在while()
中取出,只需使用常见的Click to look the echo() docs语法
while($raterows=mysqli_fetch_array($raters)) {
// do all the stuff
}
而不是
$raterows=mysqli_fetch_array($raters);
do {
// stuff
}
while($raterows=mysqli_fetch_array($raters));
我知道你的问题已得到回答,但也许这将有助于将来制作更好的代码。
答案 2 :(得分:0)
这是解决方案。感谢Vladkras先生的进一步阐述!
<input type="radio" name="rad[<?php echo $raterows['id'];?>]" />