php - 如何检查单选按钮是否包含正确答案?
问题描述
我的数据库中有 2 个表,1 个用于问卷调查,1 个用于正确答案。两者都有相互关联的id。显示问题的代码
while($row = $result->fetch_assoc()) {
echo "<br><label>". $row["Question"] ."</label><br><br>";
echo "<input type='radio' name='ans' value='ans1'>". $row["AnswerA"] ."</label><br>";
echo "<input type='radio' name='ans' value='ans2'>". $row["AnswerB"] ."</label><br>";
echo "<input type='radio' name='ans' value='ans3'>". $row["AnswerC"] ."</label><br>";
}
然后当用户点击提交时,它应该检查是否包含正确答案的单选按钮。检查答案的代码
while($row = $result->fetch_assoc()) {
if(isset($_POST['submit'])){
if($_POST['ans']== $row["CorrectAns"]) {echo "Correct";}
else {echo "Incorrect";}
}
}
我认为这只适用于一个问题。但是我有大约 20 个问题和 3 个单选按钮。检查答案时我应该添加什么?我试图在这个中避免使用 javascript,但如果有一个简单的 js 解决方案,我愿意接受
解决方案
首先,减少数据库往返并减少从数据库中获取的行。
如果您有多个问题,请从数据库中获取这些问题的所有正确答案。然后创建一个正确答案的数组$answers[question_id] = $answer;
。
然后用实际答案检查用户提交的所有答案。
<?php
if(isset($_POST['submit'])){
// $_POST['ans'] is array for all questions
$submittedAnswers = [];
$correctAnswers = [];
foreach ($_POST['ans'] as $questionID => $answer) {
$submittedAnswers[$questionID] = $answer;
}
// use mysql binding for actual query in production
//$sql = "select * from answers where Question_ID in {" . implode(',', array_keys($submittedAnswers)) . "}";
while($row = $result->fetch_assoc()) {
$correctAnswers[$row["Question_ID"]] = $row["CorrectAns"];
}
$failedQuestions = [];
foreach ($submittedAnswers as $questionID => $answer) {
if ($answer != $correctAnswers[$questionID]) {
$failedQuestions[] = $questionID;
}
}
}
推荐阅读
- spring-boot - Spring Boot Initializer 可能缺少注释
- sql - 如何从 Postgres 中的 JSON 数组中删除 JSON 对象?
- postgresql - Postgresql - 仅执行某些 IF 语句
- angular - Mat-tab angular-localize 正确的翻译方式
- javascript - 基于特定键一起重组数组 - javascript
- reactjs - 如何本地化 MUI(v5) 日期选择器输入或设置占位符
- python - 如何阻止 VSCode 在我的虚拟环境中搜索引用?
- go - gopacket 快速层解析
- python - ValueError:文件路径或缓冲区对象类型无效:
Python - c - CS50 - 制作 helpers.c