为每一行选择一个单选按钮

时间:2014-12-17 08:45:18

标签: php html mysql radio-button

我正在进行员工评估系统,现在我正在评估表管理中。

要显示评分标准,我使用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。

请帮助。谢谢!

3 个答案:

答案 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;从数据库中提取的

因此具体输入看起来像

<input type="radio" name="rad[<?php echo $raterows['id'];?>]" />

它为您提供了一个优势,您将确切地知道数据库中的哪个记录被评级,而不仅仅是您的html表中的行序列号。这有助于避免在表格提交之前DB中的表格发生变化时出错。

另一条建议:

1 。如果您使用PHP 5.4+或<?= {{3},您可以使用<?php echo代替short_open_tag = yes来提高代码的可读性}。

<强> 2 即可。混合tdth这里是不合理的,除非你制作第一个单元格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'];?>]" />