我想创建一个测验网站,用户从选定的主题中获得5个随机问题,他们必须从4个答案中选择正确的答案。之后,分数计算器php文件将尝试分析已发送的答案并基于它们建立分数。如何检查发送的答案是否正确?
数据库具有以下结构: 每个问题都有一个ID,一个问题,4个答案(A,B,C,D),带有正确答案指示符的列(因此,varchart只能是一个字母)和一个主题ID,这是一个外键。 制作完测试表格后,我尝试以不同的方式指代每个随机问题,并将问题的索引用作隐藏元素,但我没有成功,分数计算器php在第一个正确答案和分数之后停止工作之后显示的不是真实的,这是不正确的。我应该申请什么?
这是我的测验表格:
<form action="points.php" method="post">
<?php
require 'dbh.inc.php';
$sql="SELECT * FROM questions where QuestTopic='".$_POST['topic']."' order by rand() limit 5";
$req=mysqli_query($conn, $sql);
$i=1;
$_SESSION['topicchosen']=$_POST['topic'];
while($row = mysqli_fetch_assoc($req)) {
echo $row["Question"]."<br>";
$rname="rn".$i;
$rindex="rb".$i;
$i++;
echo "<input type='radio' name='".$rname."' value='A' checked>";
echo $row["AnsA"]."<br>";
echo "<input type='radio' name='".$rname."' value='B'>";
echo $row["AnsB"]."<br>";
echo "<input type='radio' name='".$rname."' value='C'>";
echo $row["AnsC"]."<br>";
echo "<input type='radio' name='".$rname."' value='D'>";
echo $row["AnsD"]."<br>";
echo "<input type='hidden' name='".$rindex."' value='".$row["QuestNum"]."'>";
}
$conn->close();
?>
这是我的积分计算器
include "dbh.inc.php";
$sql="SELECT * FROM questions where QuestTopic='".$_SESSION['topicchosen']."'";
$req=mysqli_query($conn, $sql);
$points=0;
$i=1;
while ($row=mysqli_fetch_assoc($req)){
$rname="rn".$i;
$rindex="rb".$i;
if($_POST[$rindex]==$row['QuestNum']) {
if ($_POST[$rname]==$row['CorrectAns']) {
$points+=5;
}
$i++;
}
}
echo $points;