当前位置:首页 > PHP

php 选择题如何实现

2026-02-13 21:47:28PHP

PHP 选择题实现方法

使用 PHP 实现选择题功能通常涉及前端展示、后端处理和数据库存储。以下是常见的实现方式:

基础表单实现

创建 HTML 表单提交选择题答案:

<form method="post" action="process_quiz.php">
    <p>1. PHP 是什么的缩写?</p>
    <input type="radio" name="q1" value="A"> A: Personal Home Page<br>
    <input type="radio" name="q1" value="B"> B: Preprocessor Hypertext Page<br>
    <input type="radio" name="q1" value="C"> C: Hypertext Preprocessor<br>

    <input type="submit" value="提交答案">
</form>

处理提交的答案

在 process_quiz.php 中处理用户选择:

php 选择题如何实现

$correct_answers = [
    'q1' => 'C'
];

$user_answer = $_POST['q1'];
if ($user_answer == $correct_answers['q1']) {
    echo "回答正确!";
} else {
    echo "回答错误,正确答案是 ".$correct_answers['q1'];
}

数据库存储题目

使用数据库存储选择题:

// 数据库连接
$db = new PDO('mysql:host=localhost;dbname=quiz', 'username', 'password');

// 获取题目
$stmt = $db->query("SELECT * FROM questions WHERE quiz_id = 1");
$questions = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 显示题目
foreach ($questions as $question) {
    echo "<p>{$question['question_text']}</p>";
    $stmt = $db->prepare("SELECT * FROM choices WHERE question_id = ?");
    $stmt->execute([$question['id']]);
    $choices = $stmt->fetchAll();

    foreach ($choices as $choice) {
        echo "<input type='radio' name='q{$question['id']}' value='{$choice['id']}'> 
              {$choice['choice_text']}<br>";
    }
}

随机生成选择题

动态生成选择题选项:

php 选择题如何实现

function generateQuestion($question, $options, $correct) {
    shuffle($options);
    echo "<p>$question</p>";
    foreach ($options as $key => $option) {
        $isCorrect = ($option == $correct) ? 'data-correct="true"' : '';
        echo "<input type='radio' name='quiz' value='$key' $isCorrect> $option<br>";
    }
}

generateQuestion(
    "PHP 最新稳定版本是?",
    ["PHP 7.4", "PHP 8.0", "PHP 8.2", "PHP 8.3"],
    "PHP 8.3"
);

使用会话存储结果

跨页面保持测验状态:

session_start();

if (!isset($_SESSION['score'])) {
    $_SESSION['score'] = 0;
}

if ($_POST['answer'] == $correctAnswer) {
    $_SESSION['score'] += 10;
}

AJAX 实时验证

无需刷新页面检查答案:

// 前端 JavaScript
$('input[type=radio]').change(function() {
    $.post('check_answer.php', {
        question_id: $(this).attr('name'),
        answer: $(this).val()
    }, function(response) {
        if (response.correct) {
            $(this).parent().css('background', 'lightgreen');
        }
    });
});
// check_answer.php
$answer = $_POST['answer'];
$correct = checkAnswerInDatabase($_POST['question_id'], $answer);
echo json_encode(['correct' => $correct]);

安全注意事项

防止表单作弊和注入:

// 验证答案是否存在
if (!array_key_exists($_POST['q1'], $possible_answers)) {
    die("无效的答案选项");
}

// 数据库查询参数化
$stmt = $db->prepare("SELECT correct_answer FROM questions WHERE id = ?");
$stmt->execute([$_POST['question_id']]);

以上方法可根据实际需求组合使用,构建完整的在线选择题系统。复杂实现可能需要结合框架如Laravel或Symfony。

分享给朋友:

相关文章

如何实现翻页式h5

如何实现翻页式h5

翻页式H5的实现方法 翻页式H5通常指通过滑动或点击切换页面的交互形式,常用于营销活动、产品展示等场景。以下是几种常见的实现方式: 使用HTML5和CSS3实现基础翻页 通过CSS3的transfo…

vue如何实现id

vue如何实现id

Vue 中实现 ID 的方法 在 Vue 中,可以通过多种方式为元素或组件分配唯一的 ID。以下是几种常见的方法: 使用 v-bind 绑定 ID 通过 v-bind 动态绑定 ID,可以在模板中直…

vue如何实现轮询

vue如何实现轮询

实现轮询的方法 在Vue中实现轮询可以通过以下几种方式完成,具体选择取决于项目需求和场景。 使用 setInterval 通过 setInterval 定时调用接口或执行任务,适合简单的轮询场景。…

vue如何实现ifream

vue如何实现ifream

Vue 中实现 iframe 的方法 在 Vue 中可以通过多种方式实现 iframe 的嵌入和控制。以下是几种常见的方法: 使用 HTML 原生 iframe 标签 在 Vue 模板中直接使用…

vue如何实现confirm

vue如何实现confirm

Vue 实现 Confirm 弹窗的方法 在 Vue 中实现确认弹窗(Confirm)可以通过多种方式,以下是几种常见的方法: 使用浏览器原生 confirm 最简单的实现方式是直接调用浏览器的原生…

vue如何实现replaceAll

vue如何实现replaceAll

实现字符串全局替换的方法 在Vue中实现类似JavaScript的replaceAll功能,可以通过以下几种方式: 使用String.prototype.replaceAll()(ES2021+)…