如何显示在线测验的结果(没有java / sql,纯php)?

时间:2012-04-21 01:29:24

标签: php multidimensional-array

我开始使用逗号分隔的文本文件 data.txt

  

什么是熊猫?,动物,植物,家庭成员,老师是什么?   rubix cube?,一个拼图,一个迷宫,一个盒子,一个博物馆,HTML是......,主要标记   网页语言,跨站点安全,巧妙结构化   脚本,非常安全和安全的PHP是......,通用   服务器端脚本语言,跨站点安全性,处理   超文本产品,正常处理HTML

我从文本文件中加载了我的问题, main.php 看起来像这样

<h2>MasterQuiz Online</h2>
<p>Where would you like to go?</p>

<ul>
    <li><a href='question.php'>Take quiz</a></li>
    <li><a href='module.php'>Admin Module</a></li>
</ul>

<?php
//text file
$file = fopen('data.txt', 'r');
//array setup
$array = array();
while ($line = fgetcsv($file)) {
   $array[] = $line;
}

fclose($file);

session_start();
$_SESSION["questions_array"]=$array;

//display var and index
var_dump($array);

?>

虽然这是我 question.php 的样子

<h2>Online Quiz</h2>

<form action="answer.php" method="post">

<?php

session_start();
if(sizeof($_SESSION['questions_array']) > 0 )
{
    // Get the next question off of the quiz in session
    $data = array_shift($_SESSION["questions_array"]);

    echo '<p>'.array_shift($data).'</p>'; // next question
    //shuffle($data); //shuffle choices, toggle if needed

    foreach ($data as $a => $answer){ //answers
        echo 
             '<input type="radio" name="question-'.$data.'" id="question-'.$data.'"'.
             'value="'.$a.'"/>'.
             '<label for="question-'.$data.'">'.$answer.'</label>'.
             '<br>';
             }  
}
else{
  header('location:result.php'); //questions array is empty, go to results page
}
?>
<br>
<input type="submit" name="submit" value="Submit"/>

基本上我需要两个结果页面。

每次按下submit按钮时,用户将被定向到另一个页面( answer.php ),其中显示用户是否得到了正确的答案。还会显示一个继续按钮,以便用户可以继续查看下一个问题。

这就是我想要实现的目标:

  

问题结果

     

正确/不正确 //取决于用户是否得到正确答案

     

正确答案: //插入正确答案
  您的答案: //插入用户选择的答案

     

(继续链接)

到目前为止,这是我的 answer.php 看起来像

<h2>Question Results</h2>

<?php

session_start();
$array=$_SESSION["questions_array"];

//insert whether correct or incorrect here

echo "Your answer:<br>";
echo "Correct answer:".$array[0][1];

?>
<br><br>
<a href="question.php">Continue</a>

但它不起作用。而且我完全不知道为什么。 $array[0][1]给了我一些不同的东西(我正在寻找的错误的数组值)关于它在其他页面上给我的东西(我正在寻找的价值)。

如果你们对我如何使我的代码更好和更好地工作有任何建议,我会感激任何帮助!提前谢谢!

第二个(如果这个很长,我很抱歉,但我不想在同一个想法上单独发帖)

我需要制作一个结果页面( result.php ),一旦用户完成测验,就会显示整体结果。

示例输出:

enter image description here

说实话,我对如何做到这一点感到困惑,因为这是我第一次做这样的事情。

我的 result.php

<h2>Total Results</h2>

<?php

//table of results
echo "<table border='1'>
  <tr><th>Question</th><th>Your answer</th><th>Correct answer</th><th>Points</th></tr>
  <tr><td>Question#1</td><td>one</td><td>two</td><td>three</td></tr>
  <tr><td>Question#2</td><td>one</td><td>two</td><td>three</td></tr>
  <tr><td>Question#3</td><td>one</td><td>two</td><td>three</td></tr>
  <tr><td>Question#4</td><td>one</td><td>two</td><td>three</td></tr>
  <tr><td>Question#5</td><td>one</td><td>two</td><td>three</td></tr>
  <tr><th>Total Points</th></tr>
  </table>";

?>
<br>
<a href="p05_main.php">Back to homepage</a>

表中的值只是暂时存在,因为它让我思考得更好。如果它让任何人感到困惑,我很抱歉!

再一次,非常感谢帮助!

1 个答案:

答案 0 :(得分:0)

如何使用PHP fwrite()函数将测验数据写入文件,然后使用fopen()和/或相关函数调用results.php页面上的数据:feof() ,fgets / fgetcsv()等。