簡體   English   中英

PHP隨機選擇結果有限制

[英]PHP random choice of results with a limit

我有一個文件集合(每個文件都包含一個語法練習),並且在數據庫中有一個表,其中根據文件的主題,時態和類型來描述每個文件。

我有一個表格,可以選擇所需的主題,時態和類型。 使用以下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.";
}
?>

我將使用MySQL的RAND()函數:

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

或類似的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM