我正在尝试创建一个不会更改页面名称的测验。我能够更改页面的内容,但同时,我无法获取问题的值并检查选项是否正确。 请告诉我我在哪里弄错了。如果答案是正确的,我想奖励4分,如果答案错误,我想要扣除1分。我正在从数据库中提取问题和选项。
以下是quiz.html的代码
<html>
<head>
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "tests";
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$id=1;
$sql = "SELECT question, opt1,opt2,opt3,opt4,correct FROM quiz where id='$id'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$question=$row["question"];
$opt1=$row["opt1"];
$opt2=$row["opt2"];
$opt3=$row["opt3"];
$opt4=$row["opt4"];
$correct=$row["correct"];
}
} else {
echo "0 results";
}
$conn->close();
?>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$("#div1").load("q2.php");
});
});
</script>
</head>
<body>
<div id="div1">
<form action="q2.php" method="POST">
<h3><?php echo $question;?></h3>
<input type='radio' name='choices' value='A'><?php echo $opt1;?></br>
<input type='radio' name='choices' value='B'><?php echo $opt2;?></br>
<input type='radio' name='choices' value='C'><?php echo $opt3;?></br>
<input type='radio' name='choices' value='D'><?php echo $opt4;?></br>
</form>
<button type ="submit">Next</button>
</div>
</body>
</html>
以下是显示第二个问题的代码等等。(q2.php)
<html>
<head>
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "tests";
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$id=2;
$sql = "SELECT question, opt1,opt2,opt3,opt4,correct FROM quiz where id='$id'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$question=$row["question"];
$opt1=$row["opt1"];
$opt2=$row["opt2"];
$opt3=$row["opt3"];
$opt4=$row["opt4"];
$correct=$row["correct"];
}
} else {
echo "0 results";
}
$conn->close();
?>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$("#div1").load("result.php");
});
});
</script>
</head>
<body>
<div id="div1">
<form action="results.php" method="POST">
<h3><?php echo $question;?></h3>
<input type='radio' name='choices' value='A'><?php echo $opt1;?></br>
<input type='radio' name='choices' value='B'><?php echo $opt2;?></br>
<input type='radio' name='choices' value='C'><?php echo $opt3;?></br>
<input type='radio' name='choices' value='D'><?php echo $opt4;?></br>
</form>
<button>Next</button>
</div>
</body>
</html>
现在如何在页面results.php上显示最终结果? 附:我是新手。请不要认为我很专业。
答案 0 :(得分:0)
当您将结果提交到results.php时,您需要从数据库中获取正确的答案,并且需要将它们与输入的答案进行比较。
我无法获取问题的值并检查选项是否正确
你能详细说明吗?您应该只需在PHP代码中执行$_POST['choices']
即可获取帖子值。
请注意,如果您不以某种方式在页面请求之间存储提交的值,那么您将无法获取以前的提交。为了澄清,如果您在第一页上提交第一个答案,然后在第二页上提交第二个答案,您将不会再次收到第一个答案 - 因此,如果您没有处理该数据或商店要稍后处理,你就会失去它。
正因为如此,我建议采用与您正在做的相比不同的方法。您应该在一个页面上获取并显示所有问题,而不是一次在不同的页面上提交一个答案。如果有必要,使用jQuery一次隐藏一个,但不要提交任何内容,直到所有问题都得到解答。然后使用jQuery post函数将表单数据发送到results.php进行处理和显示。
如果答案是正确的,我想奖励4分,如果答案错误,我想扣除1分。
这一切都需要在results.php代码中完成。如果您想存储谁有正确/错误的问题的数据,那么您需要将该信息存储在表格中(不与您的问题存储在同一个表中)。此外,请记住,您需要使$id
变量动态化,除非您希望每个人都有相同的结果。