我正在进行基于计算机的测试,并且无法从数据库随机获取问题,下一个按钮显示之前未显示过的问题,前一个按钮显示先前显示的问题。我有这个代码,任何人都可以帮帮我。
$specqtn = mysql_query("SELECT * FROM question_reg
WHERE courseid = '$id'") or die (mysql_error());
while ($specqtnrow = mysql_fetch_array($specqtn)){
$qtnid = $specqtnrow['qtnid']."<br>";
}
echo "<tr><td>Question</td><td>$qtncontent</td></tr>";
while ($i < $count){
$sql = mysql_query("SELECT * FROM mdlopt
WHERE qtnid = $qtnid ORDER BY RAND()") or die (mysql_error());
while($sqlrow = mysql_fetch_array($sql)){
$count = mysql_num_rows($sql);
$optid = $sqlrow['optid'];
$optval = $sqlrow['optval']."<br>";
echo "<tr><td></td><td><input name='radiobutton' type='radio' value='$qtnid'/>$optval</td></tr>";
$i++;
}
}
echo "<tr><td></td><td><input name='Previous' type='submit' id='Previous' value='Previous' />";
echo "<input type='submit' name='Next' value='next'>";
echo "<input type='submit' name='Submit' value='Submit' /></td></tr>";
答案 0 :(得分:0)
您好在代码中检索表中的所有行。只需在您的SQL查询中设置限制,您就可以获得所需内容。
答案 1 :(得分:0)
取决于您对“next”和“previous”的定义。我假设它是courseid
的顺序。要获得下一行,您可以编写如下查询:
SELECT * FROM question_reg
WHERE courseid > '$id'
ORDER BY courseid ASC
LIMIT 1
此查询获取前一个:
SELECT * FROM question_reg
WHERE courseid < '$id'
ORDER BY courseid DESC
LIMIT 1
答案 2 :(得分:0)
我认为您需要考虑一些事项。
您需要将DB与某些应用程序逻辑混合使用。为什么?因为您需要跟踪显示问题的历史记录(可能是包含问题及其选定答案的列表)。
现在您已经显示了已经显示的问题,您需要使用它们才能 DISJOINT 解决有关数据库和问题的问题。 (就像一个交集点)。为什么在你的App逻辑中。好吧,因为你将使用db上的随机选择,所以你没有任何返回的记录。
根据要解决的问题数量,我建议您首先获取一组问题并缓存它们。然后,如果您需要保持状态(如果出现一些错误或用户断开连接),那么很容易。