PHP随机选择结果有限制

时间:2014-07-21 18:06:19

标签: php

我有一个文件集合(每个文件包含一个语法练习),以及我的数据库中的一个表,其中每个文件都根据其主题,时态和类型进行描述。

我有一个表单,我可以选择我需要的主题,时态和类型。 使用以下PHP脚本,我可以检索我搜索的文件。检索到的最大练习数对应于$ limit的值。

一切正常,但我无法做的是将所有检索到的练习随机播放并随意返回。实际上,脚本从上到下浏览数据库,检索练习但在达到$ limit数量时停止。因此,永远不会检索存储在数据库中表格底部的练习。

你对如何改变所有候选文件然后输出其中的n个有什么想法,其中n = $ limit?

if(isset($_POST['limit'], $_POST['topic'], $_POST['tense'], $_POST['type']))
{
    $counter = 0;
    $limit = intval($_POST['limit']);
    $result = '';
    foreach ($_POST['topic'] as $key_topic => $value_topic)
    {
            foreach ($_POST['tense'] as $key_tense => $value_tense)
        {
            foreach ($_POST['type'] as $key_type => $value_type)
            {
               $q_to_te_ty = "SELECT * FROM items WHERE topic = '".$value_topic."' AND tense = '".$value_tense."' AND type = '".$value_type."' ORDER BY RAND()";              
               $qu_to_te_ty = mysql_query($q_to_te_ty);
               while ($rows = mysql_fetch_array($qu_to_te_ty) and ($counter < $limit))
                             {
                                     $result = $rows['file'];
                                     readfile("files/$result");
                     echo "----------------------------------------"."\n"."\n";
                     $counter++;
                             }
            }
        }
    }
    if(!$result)
      {
          echo "SORRY. There are no exercises in the database which match your search."."\n"."Please try selecting different values.";
      }
}
else
{
    echo "ERROR: You forgot to check something."."\n"."Please select at least one type, topic and tense value. And don't forget to set a number of exercises.";
}
?>

1 个答案:

答案 0 :(得分:0)

我会使用MySQL的RAND()函数:

SELECT column FROM table
ORDER BY RAND()
LIMIT $limit 

或其他一些。

相关问题