[英]next and previous mysql database records randomly
我正在进行基于计算机的测试,并且无法从数据库中随机获取问题,而下一个按钮显示的是先前未显示的问题,而前一个按钮显示的是先前显示的问题。 我有此代码,任何人都可以帮助我。
$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>";
嗨,在您的代码中,您正在检索表中的所有行。 只要在您的sql查询中放入limit,您就会得到您想要的东西。
取决于您对“下一个”和“上一个”的定义。 我认为这是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
我认为您需要考虑一些事项。
您需要将数据库与某些应用程序逻辑混合在一起。 为什么? 因为您需要跟踪显示的问题的历史记录(可能是包含问题及其选定答案的列表)。
现在,你有已经显示的问题,你需要以不相交解决在DB和问题中的问题来使用它们。 (就像设置交集一样)。 为什么在您的应用逻辑中。 好吧,因为您将在db上使用随机选择,所以您没有任何记录。
根据要解决的问题数量,我建议您首先获取一组问题并进行缓存。 然后,如果您需要保持状态(如果有错误或用户断开连接),那么这很容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.