Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算PHP中链接到数据库的测验分数_Php_Mysql_Multiple Choice - Fatal编程技术网

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

计算PHP中链接到数据库的测验分数,php,mysql,multiple-choice,Php,Mysql,Multiple Choice,我有一个带有多项选择题和提交按钮的HTML页面。Submit按钮将指向一个.php页面,其中包含连接到sql数据库和相关表中的phpmyadmin的代码,以及下面的代码,该代码告诉/提醒用户问题编号、实际问题、数据库中的正确答案以及提交的答案 我的问题是,我想计算一个分数,并将其传达给用户,但这并不是很有效。一条错误消息告诉我以下行不工作 $answered = $row['select'.$_GET['a'.$x]] ; 我从另一个问答论坛上拿了这个,我不太确定它完全说明了什么,但它似乎是导

我有一个带有多项选择题和提交按钮的HTML页面。Submit按钮将指向一个.php页面,其中包含连接到sql数据库和相关表中的phpmyadmin的代码,以及下面的代码,该代码告诉/提醒用户问题编号、实际问题、数据库中的正确答案以及提交的答案

我的问题是,我想计算一个分数,并将其传达给用户,但这并不是很有效。一条错误消息告诉我以下行不工作

$answered = $row['select'.$_GET['a'.$x]] ;
我从另一个问答论坛上拿了这个,我不太确定它完全说明了什么,但它似乎是导致错误的原因

数据库简单;仅限Questionid、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!';
?>
但当你回应“你的答案”时,你使用的是$value。这不管用吗

 $answered = $value ;

查看您提交的表单会很有帮助,但是…

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

$array = array(
        'abc'   =>  1,
        'def'   =>  2,
);
如果我现在尝试引用一些随机键,比如$array['z'],我将得到您提到的错误

第一个错误是,get参数甚至没有设置“a2”键。第二个错误是因为$row数组中不存在“select”键


我们需要查看您提交的表单,以便正确了解到底哪里出了问题。

我现在明白了。我在复制变量。我删除了行$answered=$row['select'.$\u GET['a'.$x]];并将If语句调整为$value。它现在起作用了。非常感谢。
$array = array(
        'abc'   =>  1,
        'def'   =>  2,
);