0

PHPとMysqlを使ってクイズを作ろうとしています。データベースを作成して入力しました。データベースは次のように構成されています: question_id(PK)、question、right answer、annswer1、answer2、answer3、level、および test_id(FK)。

質問をランダムな順序で「描画」するクエリを作成し、回答をシャッフルしました。Qs と As をユーザーに表示するための PHP スクリプトは次のとおりです。

while ($index <= (count($test)-1)){
 echo $test[$index]['question']. "<br/>";
 $question_id=$test[$index]['question_id'];
 $s_ans=User_Model::shuffle_answers($question_id);
  foreach ($s_ans as $s_a){
      echo "<input type='radio' name='test_ans[$index][$s_a]' id='$question_id' />$s_a <br />";

      }

 echo "<hr/>";
      $index++;

  }

上記のコードは、すべての質問とその回答を一度に表示します。
私がやりたいことはうまくいきませんでしたが、各質問を個別に表示し、ユーザーが「次へ」ボタンを押すと、次の質問とその回答が表示されます。

そう、

a)それを達成する方法はありますか?

b) ユーザーの回答にアクセスしようとすると、次の出力が表示されます。

Array ( [0] => Array ( [I  like ice cream => on ) [1] => Array ( [i don't go to school] => on ) [2] => Array ( [i play basketball] => on ) [3] => Array ( [i like sailing] => on ) )

ユーザーの回答にアクセスして、正しい回答と比較するにはどうすればよいですか?

4

2 に答える 2

2

PHPを使用しているので、セッションまたはCookieを使用できます。これはおそらく最も洗練された解決策ではありませんが、一連の質問を表す参照文字列を生成し、それを1つのセッションまたはCookie変数に格納してから、クイズの現在の位置を表す別のセッションまたはCookie変数を作成します。さらに、スコアやその他の情報を追跡するための追加の変数を使用できます。次に、次のボタンを押すと、変数を更新して次の質問を表示するか、クイズに到達した場合はクイズの最後を表示します。

別のページをロードせずに動的に実行したい場合は、javascriptを調べる必要があります。

于 2012-11-25T08:40:04.423 に答える
1

複数ページのクイズは非常に簡単です。

A) これは、ループを削除することで実行できますが、カウンターを残して非表示の ORwhile()を通過させ、変数を増やします。<input>$_SESSION

$index = $_POST['index'] // OR $_GET['index'] OR $_SESSION['index'] depending on your form method
echo $test[$index]['question']. "<br/>";
$question_id=$test[$index]['question_id'];
$s_ans=User_Model::shuffle_answers($question_id);
foreach ($s_ans as $s_a){
  echo "<input type='radio' name='test_ans[$index][$s_a]' id='$question_id' />$s_a <br />";
}

if ($index < $total_questions){
$index++; // Increase var, and then use in hidden input
echo "<input type='hidden' name='index' value='$index' />";
echo "<input type='submit' name='submit_answer' value='Next' />";}
else {
echo "<input type='submit' name='submit_answer' value='You Are Done' />";}
//OR
$_SESSION['index'] = $index++;

B)コードがなければ、これは単なる例です-

if ($user[$index]['their answer'] == $test[$index]['right answer'])
   { echo "You were correct";}
else
   { echo "Sorry, your answer was incorrect";}
于 2012-11-25T08:54:22.260 に答える