0

クイズを書いています。最初に質問がquestion.phpに表示され、次にanswer.phpで回答が分析されます。回答が正しい場合は単語が配列に格納され、間違っている場合は別の配列に格納されます。次に、question.phpなどに戻ります。これ以上質問がない場合、result.phpは、どの単語が正しいか、どの単語が間違っているかを示します。

answer.phpがロードされるたびに、セッション配列に新しい単語を含める必要があることに注意してください。

編集:問題は、セッション配列が最初のアイテムのみを格納していることです

私のコード:

answer.php:

 <?php
 session_start();

 $question = $_GET['question'];
 $user_answer = $_GET['user_answer'];
 $right_answer = mysql_query("SELECT french FROM words where english='$question'");
 $fila = mysql_fetch_assoc($right_answer); 
 $fila_french = $fila['french'];

 if ( $user_answer == $fila_french ) { 
    echo "Right"; 
    $_SESSION['right_words'] = array();
    array_push($_SESSION['right_words'], $question);
     }

     else { echo "Wrong"; 
     $_SESSION['wrong_words'] = array();
    array_push($_SESSION['wrong_words'], $question);
     }
 echo "<a href='question.php' > Next </a>";
 ?>

result.php:

 <?php
 session_start();

 $right_answers = implode(',',$_SESSION['right_words']);
 $wrong_answers = implode(',',$_SESSION['wrong_words']);  

 echo "<h1> You finished the test </h1> 
 <p> You have these words right: $right_answers</p>
 <p> You have these words wrong: $wrong_answers</p>
 <a href='../exercises.php'> Go back to exercises </a>";
 ?>

助けてくれてありがとう!

4

1 に答える 1

0

問題が何であるかはわかりませんが、セッション変数に新しい空の配列を割り当てているif / elseブロックの場合と同様に、各配列で1つのアイテムしか取得できません。これを行う前に、これらの変数がすでに定義されているかどうかを確認する必要があります。

if (!$_SESSION['right_words']) { $_SESSION['right_words'] = array(); }

'wrong_words'についても同じようにします。

result.phpファイルの場合、すべての回答をコンマで区切って一覧表示するには、次を使用できますimplode

$right_answers = implode(',',$_SESSION['right_words']);
$wrong_answers = implode(',',$_SESSION['wrong_words']);  
于 2012-11-05T13:23:01.643 に答える