计算PHP链接到数据库的测验得分

时间:2014-01-05 21:12:24

标签: php mysql multiple-choice

我有一个包含多项选择题的HTML页面和一个提交按钮。 “提交”按钮指向.php页面,其中包含以下代码:1)连接到phpmyadmin sql数据库和相关表格,以及2)下面的代码告诉/提醒用户它是什么问题,实际问题,正确回答(来自数据库)和他们提交的答案。

我的问题是,我希望计算得分并将其传达给用户,但这并不是很有效。错误消息告诉我以下行无法正常工作

$answered = $row['select'.$_GET['a'.$x]] ;

我从另一个问题/答案论坛中拿到了这个,我不太确定它完全陈述了什么,但它似乎导致了错误

数据库很简单;仅有问题,Questiontext和Correctanswer列。

浏览器显示以下内容:

Question Number: 1
Question: ________ hablo
Correct Answer: Yo
Your Answer: Yo 
  

注意:未定义索引:C:\ xampp \ htdocs \ SSF \ 1B results.php中的a2   第33行

     

注意:未定义的索引:在C:\ xampp \ htdocs \ SSF \ 1B results.php中选择   在第33行你正确回答了1个问题中的0个!

代码

$result = mysql_query("SELECT * FROM 1b")
              or die ('Connection to table failed');

$x = 0;
$score = 0;
while ($row = mysql_fetch_assoc($result)){

    echo "Question Number: " . $row['Questionid'] . '<br />';
    echo "Question: " . $row['Questiontext'] . '<br />';
    echo "Correct Answer: " . $row['Correctanswer'] . '<br />';
    foreach ($_GET['select'] as $value)
    echo "Your Answer: " . $value."\n" . '<br />';

    $answered = $row['select'.$_GET['a'.$x]] ;
    $correct = $row['Correctanswer'] ;

    if ($answered == $correct ) {
        $score++;
        $acolor = 'green' ;
    }
    else {
        $acolor = 'red' ;
    }

    $x = $x + 1;
}
echo 'You answered ' . $score . ' out of ' . $x . ' questions correctly!';
?>

2 个答案:

答案 0 :(得分:0)

$answered = $row['select'.$_GET['a'.$x]] ;

但是当你回应'你的回答'时,你会使用$ value。这不行吗?

 $answered = $value ;

(看看你提交的表格会很有帮助......)

答案 1 :(得分:0)

未定义的索引错误是您通过键引用数组中的值时获得的,但该键不存在。例如:

$array = array(
        'abc'   =>  1,
        'def'   =>  2,
);

如果我现在尝试引用一些随机密钥,比如$ array ['z'],我会得到你提到的错误。

你得到的第一个错误是告诉你你的GET参数甚至没有设置'a2'键。你得到的第二个错误,因为$ row数组中不存在'select'键。

我们需要查看您提交的表单,以便正确了解错误的原因。