0

我试图使用while循环条件增加值1,我正在开发测验生成系统,但卡在这里并没有找到任何解决方案,请帮助并告诉我该怎么做......

<?php
$ques2=mysql_query("SELECT * FROM questions WHERE course='english' AND id='$id'");

$i = 1;
while($rows=mysql_fetch_assoc($ques2))
{
$i++;
$qech1=$rows['optiona'];
$qech2=$rows['optionb'];
$qech3=$rows['optionc'];
$qech4=$rows['optiond'];
$correct=$rows['correct'];
?>
<input type='radio' name='<?php echo $i; ?>' value='<?php echo $qech1; ?>'><?php echo $qech1."<br>"; ?><br>
<input type='radio' name='<?php echo $i; ?>' value='<?php echo $qech2; ?>'><?php echo $qech2."<br>"; ?><br>
<input type='radio' name='<?php echo $i; ?>' value='<?php echo $qech3; ?>'><?php echo $qech3."<br>"; ?><br>
<input type='radio' name='<?php echo $i; ?>' value='<?php echo $qech4; ?>'><?php echo $qech4."<br>"; ?><br>
<?php
}

?>

你看到上面的代码,它是 $i = 1; 然后我在无线电的 4 个领域中也回显了 $i。它从数据库中检索大约 3 个问题,每个问题有 4 个值,但是 3 个问题的 12 个值的所有值都具有相同的名称,即 1,它不是使用 $i++ 递增不确定为什么?

这里出来了

<span style='font-size:18px;font-weight:550px; '>english</span><br><input type='radio' name='1' value='kjk'>kjk<br><br>
<input type='radio' name='2' value='kjk'>kjk<br><br>
<input type='radio' name='2' value='jkj'>jkj<br><br>
<input type='radio' name='2' value='kjk'>kjk<br><br>
<span style='font-size:18px;font-weight:550px; '>adnan </span><br><input type='radio' name='1' value='jhwjksahajsh'>jhwjksahajsh<br><br>
<input type='radio' name='2' value='kjhjhjh'>kjhjhjh<br><br>
<input type='radio' name='2' value='kjhkjjh'>kjhkjjh<br><br>
<input type='radio' name='2' value='hjkjhj'>hjkjhj<br><br>
 <span style='font-size:18px;font-weight:550px; '>sdfsd</span><br><input type='radio' name='1' value='gfgf'>gfgf<br><br>
<input type='radio' name='2' value='gfg'>gfg<br><br>
<input type='radio' name='2' value='gfg'>gfg<br><br>
<input type='radio' name='2' value='gf'>gf<br><br>
4

2 回答 2

1

您可以使用 Heredoc 字符串来帮助您解决此问题。我做了一个简单的例子,它会以一种简单的方式输出你想要的东西。看一看:

<?php
$ques2=mysql_query("SELECT * FROM questions WHERE course='english' AND id='$id'");

$i = 1;
while($rows=mysql_fetch_assoc($ques2))
{
$qech1=$rows['optiona'];
$qech2=$rows['optionb'];
$qech3=$rows['optionc'];
$qech4=$rows['optiond'];
$correct=$rows['correct'];
echo <<<HTML
    <input type='radio' name='$i' value='$qech1'>$qech1<br><br>
    <input type='radio' name='$i' value='$qech2'>$qech2<br><br>
    <input type='radio' name='$i' value='$qech3'>$qech3<br><br>
    <input type='radio' name='$i' value='$qech4'>$qech4<br><br>
HTML;

$i++;
}
于 2013-05-01T22:00:03.040 回答
0

它不增加的原因是因为您$i在增加它之后立即调用。

while ... {
  $i++
   ...
   ..name="$i"...
}

现在,它通过循环一次并将所有名称打印为 2。下一次所有名称都将是 3,依此类推。

你想要的更多的是一个foreach循环。我仅出于测试目的分配了基本值。我个人会消除分配$quech1 = $rows[optiona]。您可以只使用$rows带有foreach循环的数组。

<?php 
$ques2=mysql_query("SELECT * FROM questions WHERE course='english' AND id='$id'");

while($rows=mysql_fetch_assoc($ques2))
{
    $rows['optiona'] = "optiona";
    $rows['optionb'] = "optionb";
    $rows['optionc'] = "optionc";
    $rows['optiond'] = "optiond";
    $correct=$rows['correct'];
}
$i = 0;
foreach ($rows as $row){
    $i++;?>
    <input type='radio' name='<?php echo $i; ?>' value='<?php echo $row; ?>'><?php echo $row."<br>"; ?>
<?php } ?>

您将从我的检查元素中看到,您现在获得了递增的名称: 名字递增

不过,如果我没记错的话。您通常不希望一组单选按钮的所有名称都相同吗?您将需要唯一的 ID。然后将所有要组合在一起的按钮使用相同的名称。这使得只能选择该组中的一个按钮。如果这是您要完成的任务,请使用修改后的代码:

<?php 
$ques2=mysql_query("SELECT * FROM questions WHERE course='english' AND id='$id'");
$name = 1;
while($rows=mysql_fetch_assoc($ques2))
{
    $rows['optiona'] = "optiona";
    $rows['optionb'] = "optionb";
    $rows['optionc'] = "optionc";
    $rows['optiond'] = "optiond";
    $name++;
}
$i = 0;
foreach ($rows as $row){
    $i++;?>
    <input type='radio' id='<?php echo $i; ?>' name='<?php echo $name; ?>'value='<?php echo $row; ?>'><?php echo $row."<br>"; ?>
<?php } ?>

唯一的变化是$i分配给id现在。我们也会声明一个$name计数器。我们将在while循环中增加它,这样每组按钮​​选项只会增加一次。然后在按钮$namename属性中使用。

这对我来说很有意义。但是,如果没有更多信息,我们并不确切知道您要完成什么。:)

于 2013-05-01T21:47:02.867 回答