下一个和以前的mysql数据库随机记录

时间:2011-07-28 09:11:32

标签: php mysql random sql-order-by

我正在进行基于计算机的测试,并且无法从数据库随机获取问题,下一个按钮显示之前未显示过的问题,前一个按钮显示先前显示的问题。我有这个代码,任何人都可以帮帮我。

$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>";

3 个答案:

答案 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)

我认为您需要考虑一些事项。

  1. 您需要将DB与某些应用程序逻辑混合使用。为什么?因为您需要跟踪显示问题的历史记录(可能是包含问题及其选定答案的列表)。

  2. 现在您已经显示了已经显示的问题,您需要使用它们才能 DISJOINT 解决有关数据库和问题的问题。 (就像一个交集点)。为什么在你的App逻辑中。好吧,因为你将使用db上的随机选择,所以你没有任何返回的记录。

  3. 根据要解决的问题数量,我建议您首先获取一组问题并缓存它们。然后,如果您需要保持状态(如果出现一些错误或用户断开连接),那么很容易。