将多个单词存储在会话数组中,然后显示它们

时间:2012-11-05 13:17:32

标签: php

我正在写一个测验。首先问题显示在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>";
 ?>

谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

你没有说出问题是什么,但你在每个数组中只得到1个项目,就像你在if / else块中为你的会话变量分配一个新的空数组一样。在执行此操作之前,您应该检查这些变量是否已经定义:

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']);