php - 如何进行循环语句,从上一页获取值?
问题描述
我正在本地主机上的网站上设置在线测验/考试页面(仅用于教育目的)。但是在检查答案时,它只检查第二个问题的正确答案。例如,有 2 个问题。我选择了两个正确答案,但在下一页显示我得到了 2 分中的 1 分。 ?
我也尝试过使用 POST/GET 方法……但还是一样
参加测验的学生(问题).php
<?php
include("conn.php");
$quiz_id = intval($_GET['quiz_id']);
$display = mysqli_query($con,"SELECT * FROM question WHERE quiz_id =
$quiz_id");
if (!isset($_POST['Submit']) || ($_POST['Submit'] != 'Mark')) {
while ($row = mysqli_fetch_array($display)) {
echo "<form method=post action='score.php?quiz_id=";
echo $row['quiz_id'];
echo "'>";
echo "<table border=0>";
$id = $row["question_id"];
$question = $row["questions"];
$opt1 = $row["option1"];
$opt2 = $row["option2"];
$opt3 = $row["option3"];
$opt4 = $row["option4"];
$answer = $row["answer"];
echo "<tr><td colspan=3><br><b>$question</b></td></tr>";
echo "
<tr>
<td>$opt1 <input type=radio name='q$id' value=\"$opt1\"></td>
<td>$opt2 <input type=radio name='q$id' value=\"$opt2\"></td>
<td>$opt3 <input type=radio name='q$id' value=\"$opt3\"></td>
<td>$opt4 <input type=radio name='q$id' value=\"$opt4\"></td>
</tr>
";
}
echo "</table>";
echo "<input type='Submit' name='Submit' value ='Mark'>";
echo "</form>";
}
?>
Score.php(标记结果)
<?php
include("conn.php");
$quiz_id = intval($_GET['quiz_id']);
if ($_POST['Submit']) {
$display = mysqli_query($con,"SELECT * FROM question WHERE quiz_id = $quiz_id");
while ($row = mysqli_fetch_array($display)) {
$id = $row["question_id"];
$answer = $row["answer"];
$score = 0;
$total = mysqli_num_rows($display);
while ($result = mysqli_fetch_array($display)) {
$answer = "$result[answer]";
$q = "q$result[question_id]";
$q = trim($q);
if ($_POST[$q] == $answer) {
$score++;
}
}
echo "<p align=center><b>You scored $score out of $total</b></p>";
echo "<p>";
}
}
?>
我希望结果是 2 分中的 2 分。但它只显示 2 分中的 1 分。
更新
<?php
include("conn.php");
$quiz_id = intval($_GET['quiz_id']);
//echo 'from form: '.$_POST['q14']; // from form
if ($_POST['Submit']) {
$display = mysqli_query($con,"SELECT * FROM question WHERE quiz_id =
$quiz_id");
while ($result = mysqli_fetch_array($display)) {
$id = $result["question_id"];
$answer = $result["answer"];
$score = 0;
$total = mysqli_num_rows($display);
$answer = $result['answer'];
$q = $result['question_id'];
echo 'answer: '.$answer;
//echo $q;
//$q = trim($q);
/* if ($q == $answer) {
$score++;
//echo "<p align=center><b>You scored $score out of $total</b></p>";
//echo "<p>";
}
}
?>
解决方案
推荐阅读
- click - 如何在单击时获得 OpenLayers 5 中的 lon/lat 值
- spring-boot - Spring Boot Maven 插件:它实际上做了什么?
- reactjs - 在 useState 中使用对象作为状态时防止重新渲染
- android - 如何从本地存储中获取文件(pdf、jpg、docs)并创建文件
- angular - 在 Visual Studio 2019 中为 Angular 应用程序构建失败
- c# - 在 C# 的后台初始化 HalconWindow/HSmartWindowControlWPF
- verilog - 为什么在编程流光程序后LED仍然保持初始状态而模拟没有出错?
- php - FastExcel 导入附加字段数据
- java - Java中带有新行的HashMap列表到JSON字符串中
- r - 跨数据集和列匹配