2017-04-07 33 views
0

我想在PHP和MySQL中開發一個quizz應用程序。現在我有一個案例,我必須從按鈕單擊數據庫中獲得一個隨機行。出現的問題一次不應該出現。從數據庫中選擇隨機和獨特的行按鈕單擊

我所做的是,我從數據庫中選擇隨機行,然後將數據存儲在會話變量中作爲數組。下一次,如果問題ID位於該陣列上,則獲取該隨機行的數據。如果問題ID已經在該數組上,則重新加載頁面以獲取新問題,否則顯示該問題。

我已經使用的代碼如下 Code to select random and unique row

Code to display value and save value on array

enter image description here enter image description here

對不起!我不能把代碼在這裏,由於格式問題。

+2

歡迎堆棧溢出。讓標籤充當您正在使用的技術類型和您想要的解決方案的指南,而不是標題。將代碼作爲純文本置於問題的正文中也非常重要。該截圖不能被複制粘貼,如果有人想對它進行微小的更改,則必須重新輸入截圖。請嘗試編輯您的問題,以該格式添加該代碼。如果有人可以複製,粘貼,編輯和回答你的問題,他們很可能會。如果它需要查看圖像並重新輸入,他們可能不會。 – tadman

+0

因爲我從來沒有做過你需要做的事情,所以我搜索了一些相關的教程,它可以幫助你[link#1](http://jan.kneschke.de/projects/mysql/order-by-rand /)和[link#2](http://mysql.rjweb.org/doc.php/random)。我還沒有閱讀他們,只是開始,所以不能多說... – OldPadawan

+0

非常感謝您的建議@tadman –

回答

0

用你的方式,當你的數據庫上的每個問題都向用戶顯示時,頁面將進入無限重定向循環。您可以使用這樣的查詢:

SELECT * FROM tbl_question 
    WHERE question_id NOT IN ([previously shown ids]) AND is_active='yes' 
    ORDER BY RAND() LIMIT 1 

這樣,如果你沒有得到任何結果,你會認爲所有的問題都得到了顯示給用戶,你就不會需要一個頁面當問題存在於會話變量中時,刷新切換到另一個問題。

在你的代碼,修改:

$where = "is_active='yes'" 

$where = "is_active='yes' AND id NOT IN (" . implode(",", $_SESSION["ques"]) . ")"; 
+0

謝謝@ taha-paksu和所有的答案。最後,我的應用程序正在按照應有的方式工作。非常感謝大家。 –

相關問題