我正在写一个测验。首先问题显示在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>";
?>
谢谢你的帮助!
答案 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']);