Php 如何查看用户';学生在测验中的选择正确吗?
我试图检查用户选择的答案是否正确,但无法正常工作:Php 如何查看用户';学生在测验中的选择正确吗?,php,mysql,post,phpmyadmin,mysql-num-rows,Php,Mysql,Post,Phpmyadmin,Mysql Num Rows,我试图检查用户选择的答案是否正确,但无法正常工作: <form method="post"> <?php $question = mysql_query("SELECT * FROM `questions`"); $stat = mysql_fetch_assoc($que
<form method="post">
<?php
$question = mysql_query("SELECT * FROM `questions`");
$stat = mysql_fetch_assoc($question);
$num = mysql_num_rows($question);
$questionid = 0;
for($i=0;$i<=$num;$i++)
{
$question = mysql_query("SELECT * FROM `questions` WHERE `id`='$i'");
$stat = mysql_fetch_assoc($question);
//if($stat['answer'] == null
echo $stat['question'] . '<br />';
echo '<input type="radio" name="a'.$x.'" value="'.$x.'" />' .$stat['answer1']."<br />";
echo '<input type="radio" name="a'.$x.'" value="'.$x.'" />' .$stat['answer2'] . '<br />';
echo '<input type="radio" name="a'.$x.'" value="'.$x.'" />' .$stat['answer3'] . '<br />';
echo '<input type="radio" name="a'.$x.'" value="'.$x.'" />' .$stat['answer4'] . '<br />';
$questionid++;
$x = $x+1;
}
echo $result;
?>
<input type="submit" name="go" value="Go" />
</form>
这是另一个帮助你的尝试
实际上,我写了一个“完整的解决方案”,在这个过程中,我发现了代码中的一些小错误,还有一些我无法理解的东西
主要错误:你所有的单选按钮都有相同的值($x),所以无论你按问题1的哪个按钮,答案都是“1”,等等。你做的其他事情我都不太明白——所以我做的是创建一个简单的流程——一个页面询问问题,另一个页面评估结果
问题页面(我混淆了数据库的访问参数-不,我不使用“密码”作为密码!):
你试过任何基本的调试吗?e、 g.var\u dump($\u POST)
?您似乎正在将字段名构建为a1
,a2
,等等。。。但是正在寻找ans1
,ans2
,等等。。。你能打印出一些中间结果吗?例如,什么是$row['correct']
-这是您所期望的吗?我认为Marc发现了a.
和ans之间的差异。
我在PHP部分中用结果检查将ans更改为a,$\u row['correct']基本上是一个整数,它告诉我们哪个答案是正确的。如果$result从未初始化过,这有关系吗?我不知道它是否在代码之外,但在这里我只看到结果递增并显示,最初没有设置任何值。即使我选择了正确的答案,它也会告诉“0”,可能是MySQL的问题:结构是:id question\u id question type correct answer1 answer2 answer3 answer4 id是AI和answer1,answer2,etc'..的值是一个整数(1,2,3,4),它指定了他选择的答案。答案的文本在answer1、answer2、answer3、answer4字段中。好了,终于解决了!刚刚添加了$_POST['a'.$x]值,然后对其进行比较,这给出了正确的答案OK-很高兴你让它工作了。在我的迷你数据库中,正确答案(文本,而不是索引)在“答案”列中。。。如果这个解决方案有效,你可以考虑“接受”它。
$x = 1;
$question = mysql_query("SELECT * FROM `questions`");
$stat = mysql_fetch_assoc($question);
$num = mysql_num_rows($question);
if(isset($_POST['go']))
{
for($i=0;$i<$num;$i++)
{
if ($_POST['ans'.$x] == $row['correct'])
{
$result = $result + 1;
}
$x = $x + 1;
}
}
<html>
<body>
<form action="./evaluate.php" method="post">
<?php
$server = mysql_connect ('localhost', 'username, 'password');
mysql_select_db("questionnaire", $server);
$question = mysql_query("SELECT * FROM `Questions`;");
$x = 0;
while ($row = mysql_fetch_assoc($question))
{
echo $row['question'] . '<br />';
echo '<input type="radio" name="a'.$x.'" value=1 />' .$row['answer1'] . '<br />';
echo '<input type="radio" name="a'.$x.'" value=2 />' .$row['answer2'] . '<br />';
echo '<input type="radio" name="a'.$x.'" value=3 />' .$row['answer3'] . '<br />';
echo '<input type="radio" name="a'.$x.'" value=4 />' .$row['answer4'] . '<br />';
$x = $x + 1;
}
mysql_close($server);
?>
<input type="submit" name="Submit" value="Submit" />
<br>
</form>
</body>
</html>
<html>
<body>
<?php
$server = mysql_connect ('localhost', 'username', 'password');
mysql_select_db("questionnaire", $server);
$question = mysql_query("SELECT * FROM `Questions`;");
$x = 0;
$score = 0;
while ($row = mysql_fetch_assoc($question))
{
echo $row['question'] . '?<br />';
$answered = $row['answer'.$_POST['a'.$x]] ;
$correct = $row['correct'] ;
if ($answered == $correct ) {
$score++;
$acolor = 'green' ;
}
else {
$acolor = 'red' ;
}
echo 'you answered <font color=' . $acolor . '>' . $answered . '<font color=black> <br />';
echo 'the correct answer was ' . $correct . '<br />' ;
echo '-------------------------------------- <br />' ;
$x = $x + 1;
}
echo 'You had a total of ' . $score . ' out of ' . $x . ' questions right!';
mysql_close($server);
?>
</body>
</html>