php - 如何检查单选按钮是否包含正确答案?

标签 php html mysql

我的数据库中有 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;
        }
    }

}

关于php - 如何检查单选按钮是否包含正确答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55860802/

相关文章:

php - 通知 : Undefined offset: 0 on one website but not the other 中的函数结果

php - 如何使用 Mockery 在模拟方法的第 N 次调用中引发异常

php - Symfony ManyToMany 查询生成器计数返回错误的数字

javascript - 将 jsfiddle 传输到 Dreamweaver

mysql - 数据库结构 - 这是正确的做事方法吗?

php - 如何从外部 url Laravel 公共(public)目录保存文件

javascript - 如何实现粘性表头和几列(每列都有复选框或输入)

带图像的 JavaScript 视频

Python 'float64' 无法转换为 MySQL 类型,但在手动查询中没问题

c# - 确保 Entity Framework 中的并发(金钱)交易?