【问题标题】:next and previous mysql database records randomly下一个和上一个mysql数据库记录随机
【发布时间】:2011-07-28 09:11:32
【问题描述】:

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

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

【问题讨论】:

  • 您要显示多少个问题?您是否将状态保存在某处以将 http 请求“绑定”到会话? (见docs.php.net/sessions
  • 可变数量的问题和可变数量的要显示的问题

标签: php mysql random sql-order-by


【解决方案1】:

您好,在您的代码中,您正在从表中检索所有行。只需在您的 sql 查询中添加限制,您就会得到所需的内容。

【讨论】:

  • 不,那可能是错误的,where 条件只检查一个 id。
  • 如果只有一个 id 则不使用 rand()。它总是返回相同的 id。
  • 我认为第一个查询是最重要的。
  • 因为我觉得第一个查询正在检索一个课程的 id,该课程使用第二个查询进一步映射到其他表,所以如果您只获得该 qtnid 的一个值,那么它可以,但如果不是结帐phpmyadmin
【解决方案2】:

取决于您对“下一个”和“上一个”的定义。我假设它是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

【讨论】:

    【解决方案3】:

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

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

    2. 现在您已经有了已显示的问题,您需要使用它们来DISJOINT DB 上的问题和已解决的问题。 (就像一个固定的交叉点)。为什么在您的应用程序逻辑中。好吧,因为您将在 db 上使用随机选择,所以您没有任何返回的记录。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      • 2012-02-10
      • 2014-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-24
      相关资源
      最近更新 更多