2011-07-28 8 views
1

私はコンピュータベースのテストを行っていますが、以前に表示されていなかった質問と以前に表示されていた質問を表示する次のボタン表示された質問。私はこのコードを持っていて誰も私を助けてくれます。次回と前回のmysqlデータベースレコードはランダムに

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

何件の質問を表示しますか? http要求をセッションに「バインド」するために状態を保存しますか? (http://docs.php.net/sessionsを参照してください) – VolkerK

+0

可変数の質問と表示されるものの可変数 –

答えて

0

こんにちは、あなたのコードでは、テーブルからすべての行を取得しています。ちょうどあなたが探しているものを得るSQLクエリの制限を入れてください。

+0

いいえ、それはおそらく間違っています。 – Alp

+0

idが1つだけの場合は、rand()を使用しません。常に同じIDを返します。 – Sumant

+0

私は最初の質問が重要だと思います。 – Alp

0

"次へ"と "前へ"の定義によります。私はそれが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 
0

私はあなたが考慮する必要があるいくつかの事があると思います。

  1. DBをいくつかのアプリケーションロジックと混在させる必要があります。どうして?表示された質問の履歴を追跡する必要があるため(質問と選択された回答を含むリスト)

  2. これまでに表示された質問がありましたので、DISJOINT DBと質問の問題を解決するために使用する必要があります。 (ちょうどセット交差点のように)。なぜあなたのアプリケーションロジックで。さて、あなたはDB上でランダム選択で作業するので、返されたもののレコードはありません。

  3. 解決する質問の数に応じて、最初に一連の質問を取得してキャッシュすることをお勧めします。次に、状態を保持する必要がある場合(何らかのエラーがある場合やユーザーが切断された場合)

関連する問題