2016-09-29 1 views
-3

私はこの問題に直面しています。私は検査システムを構築しており、Rand()関数を使用して「質問」テーブルから質問を選択しています。ユーザーの回答も「user_answer」テーブルに保存されます。PHPでRAND()を使った二重選択

質問が2回または3回選択されることがあるので、質問が「user_answer」テーブルで既に回答されている場合は、「question」テーブルから別の質問を再選択する必要があります。 。

+3

現在、どのコードを使用していますか? –

+0

コードはありません。さて、あなたは以下の「魔法の」答えかもしれません。彼らに尋ねる。それがうまくいかない場合は、何を推測しますか?うん、ここの術語はあなたの質問が巡ってくる「推測」です。 –

答えて

0

Rand()で直接除外することはできません。あなたは、データベースから照会する場合

、あなたはこれが答え(ANY答えは、おそらくその中にいくつかのユーザ選択を追加したい)に接続しよう、とだけ与える

select * 
from question q 
left join user_answer ua on ua.question_id = q.id 
where ua.id is null 
group by q.id 

のようなものを追加することができますそれを行うためにFAILS(ua.idがヌル)の質問を戻してください。

あなたがそれを行うことができない場合は、いくつかのPHP配列でそれをすることができる、あなたの配列で利用可能な質問IDを追跡することです。あなたが質問をランダムに選ぶたびに、その項目(値!)を配列から削除し、配列を再索引付けします(質問IDの値を保持し、0から質問数-1までのキーを順序付けします)。

これで、rand(0、count($ questionIds))をもう一度実行することができます。

もう1つの方法は、ループを使用して、選択された質問がすでに使用されている質問配列内にある限り継続します。

関連する問題