PHP单选题对比用户答案和数据库答案并计算分数

现在能够在网页正常显示随机抽取的题目,不用循环展示题目是因为要区分每道题的选项的name,用循环的话name要带个变量,比如$i,但是这样就不知道怎么用get或者post获取用户选的答案。

我现在遇到的问题是:在选择正确答案之后点击“提交”按钮,没办法计算用户得分,一直显示是0,不知道怎么让它计算分数(我感觉现在是逻辑有点问题)。希望能得到可行的解决办法。然后希望能用我能看懂的代码解决问题,不要用=>这种语句。

我试过把用户答案和数据库答案传到另一个PHP文件再计分,但是好像也没办法计分

img

img

img

img

img

img

以上这些是做题的页面,option1,2,3,4是数据库里的问题选项,Answer是数据库答案

img

img


以上是尝试在另一个界面计分

img


原本希望能用网页弹窗显示用户答题得分,但是实现不了,目前只能用上图这样从数据库里获取数据。

私聊,发代码给我我看下

引用GPT

可以尝试在提交按钮的处理逻辑中,对用户答案和数据库答案进行比对,并计算得分。具体实现可以参考以下代码:1. 在题目展示页面中,每个选项的name属性可以设置为一个数组,例如:

<input type="radio" name="answer[<?php echo $question_id; ?>]" value="<?php echo $option_id; ?>">
其中$question_id是当前题目的ID,$option_id是当前选项的ID。2. 在提交按钮的处理逻辑中,可以获取用户提交的答案,例如:

$answers = $_POST['answer']; // 获取用户提交的答案
其中$answers是一个数组,包含了所有题目的用户答案。3. 对比用户答案和数据库答案,并计算得分,例如:

$score = 0; // 初始化得分为0
foreach ($answers as $question_id => $user_answer) {
    $correct_answer = get_correct_answer($question_id); // 获取数据库中该题目的正确答案
    if ($user_answer == $correct_answer) {
        $score++; // 如果用户答案和正确答案相同,则得分加1
    }
}
其中get_correct_answer()是一个自定义函数,用于从数据库中获取指定题目的正确答案。4. 最后将得分显示在页面上,例如:

echo "您的得分是:" . $score;
以上代码中没有使用=>语句,希望能够满足您的需求。


以下内容部分参考ChatGPT模型:
首先,要计算用户得分,需要在用户点击提交按钮后,将用户选择的答案和正确答案进行比较,如果相同,则加分,最后将总分保存到数据库中。

在你的代码中,可以通过POST方式将用户选择的答案传递到后台PHP文件中,然后通过查询数据库获取正确答案,比较两者是否相同,如果相同则将分数加上该题目的分数,最后将总分保存到数据库中。

具体实现方法如下:

  1. 在做题页面中,将每个选项的name属性设置为一个数组,例如name="answer[1]",其中1表示第一道题的答案选项。用户点击提交按钮后,将答案通过POST方式提交到后台PHP文件中。

  2. 在后台PHP文件中,获取用户选择的答案和题目的编号,例如$answer = $_POST['answer']; $question_id = $_POST['question_id'];,然后查询数据库获取该题目的正确答案,例如$correct_answer = query_database($question_id);,其中query_database是查询数据库的函数。

  3. 比较用户选择的答案和正确答案是否相同,如果相同,则加上该题目的分数,例如$score += $question_score;,其中$question_score是该题目的分数,最后将总分保存到数据库中,例如update_score($user_id, $score);,其中update_score是更新用户得分的函数。

  4. 最后,可以通过网页弹窗或者跳转到另一个页面来显示用户得分。

示例代码如下:

做题页面:

<form method="post" action="submit.php">
  <input type="hidden" name="question_id" value="<?php echo $question_id; ?>">
  <input type="radio" name="answer[<?php echo $question_id; ?>]" value="1">
  <label><?php echo $option1; ?></label><br>
  <input type="radio" name="answer[<?php echo $question_id; ?>]" value="2">
  <label><?php echo $option2; ?></label><br>
  <input type="radio" name="answer[<?php echo $question_id; ?>]" value="3">
  <label><?php echo $option3; ?></label><br>
  <input type="radio" name="answer[<?php echo $question_id; ?>]" value="4">
  <label><?php echo $option4; ?></label><br>
  <input type="submit" value="提交">
</form>

后台PHP文件submit.php:

<?php
// 获取用户选择的答案和题目编号
$answer = $_POST['answer'];
$question_id = $_POST['question_id'];

// 查询数据库获取正确答案
$correct_answer = query_database($question_id);

// 初始化得分
$score = 0;

// 比较用户选择的答案和正确答案是否相同,如果相同,则加上该题目的分数
if ($answer[$question_id] == $correct_answer) {
  $score += $question_score;
}

// 更新用户得分
update_score($user_id, $score);

// 跳转到结果页面或者弹窗显示得分
?>

其中,query_database和update_score是根据你的具体实现进行编写的函数,$user_id和$question_score也需要根据实际情况进行设置。
如果我的建议对您有帮助、请点击采纳、祝您生活愉快