当前位置:首页 > PHP

PHP实现题库源码

2026-02-27 23:34:45PHP

以下是一个基于PHP的简单题库系统实现方案,包含核心功能和代码示例:

数据库设计

创建MySQL数据库表结构存储题目和答案:

PHP实现题库源码

CREATE TABLE `questions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `question_text` text NOT NULL,
  `question_type` enum('single','multiple','true_false') NOT NULL,
  `difficulty` tinyint(4) DEFAULT 1,
  `category_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE `answers` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `question_id` int(11) NOT NULL,
  `answer_text` text NOT NULL,
  `is_correct` tinyint(1) DEFAULT 0,
  PRIMARY KEY (`id`)
);

题目添加功能

实现后台题目添加的表单处理:

PHP实现题库源码

// 添加题目处理
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $questionText = $_POST['question_text'];
    $questionType = $_POST['question_type'];

    $stmt = $pdo->prepare("INSERT INTO questions (question_text, question_type) VALUES (?, ?)");
    $stmt->execute([$questionText, $questionType]);
    $questionId = $pdo->lastInsertId();

    // 处理答案选项
    foreach ($_POST['answers'] as $answer) {
        $isCorrect = isset($_POST['correct_answers'][$answer['id']]) ? 1 : 0;
        $stmt = $pdo->prepare("INSERT INTO answers (question_id, answer_text, is_correct) VALUES (?, ?, ?)");
        $stmt->execute([$questionId, $answer['text'], $isCorrect]);
    }
}

题目展示功能

前端展示题目及选项:

// 获取题目列表
$stmt = $pdo->query("SELECT * FROM questions");
$questions = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($questions as $question) {
    echo "<div class='question'>";
    echo "<h3>{$question['question_text']}</h3>";

    // 获取对应答案
    $stmt = $pdo->prepare("SELECT * FROM answers WHERE question_id = ?");
    $stmt->execute([$question['id']]);
    $answers = $stmt->fetchAll();

    foreach ($answers as $answer) {
        echo "<label><input type='radio' name='q{$question['id']}' value='{$answer['id']}'>";
        echo "{$answer['answer_text']}</label><br>";
    }
    echo "</div>";
}

答案验证功能

提交后验证用户答案:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $score = 0;
    foreach ($_POST as $key => $userAnswer) {
        if (strpos($key, 'q') === 0) {
            $questionId = substr($key, 1);

            // 获取正确答案
            $stmt = $pdo->prepare("SELECT id FROM answers WHERE question_id = ? AND is_correct = 1");
            $stmt->execute([$questionId]);
            $correctAnswers = $stmt->fetchAll(PDO::FETCH_COLUMN);

            if (in_array($userAnswer, $correctAnswers)) {
                $score++;
            }
        }
    }
    echo "您的得分: {$score}";
}

扩展功能建议

  • 添加分类管理功能
  • 实现题目随机组卷
  • 添加题目难度分析
  • 开发用户答题历史记录
  • 实现题目导入导出功能

系统可采用MVC架构组织代码,建议使用PDO进行数据库操作防止SQL注入。前端可使用Bootstrap等框架优化界面展示效果。

标签: 题库源码
分享给朋友:

相关文章

uniapp游戏源码

uniapp游戏源码

获取UniApp游戏源码的途径 开源平台 GitHub、Gitee等平台提供大量UniApp开发的游戏源码,搜索关键词如“uniapp game demo”或“uniapp 游戏源码”,可找到类似《2…

Vue核心实现源码

Vue核心实现源码

Vue 核心实现源码解析 Vue.js 的核心实现主要围绕响应式系统、虚拟 DOM、模板编译和组件化展开。以下是对其核心源码的解析: 响应式系统 Vue 的响应式系统基于 Object.define…

vue2.0源码实现

vue2.0源码实现

Vue 2.0 核心源码实现解析 Vue 2.0 的源码设计围绕响应式系统、虚拟 DOM 和组件化展开。以下是其核心模块的实现要点: 响应式系统 通过 Object.defineProperty 实…

vue源码的具体实现

vue源码的具体实现

Vue 源码的核心实现 Vue.js 的源码实现主要围绕响应式系统、虚拟 DOM、模板编译和组件化等核心概念展开。以下是关键部分的实现细节: 响应式系统 Vue 2.x 使用 Object.defi…

react源码实现

react源码实现

React 源码实现分析 React 的核心源码实现涉及虚拟 DOM、协调算法、组件生命周期等多个关键部分。以下是主要实现机制的解析: 虚拟 DOM 结构 React 使用虚拟 DOM 作为真实 D…

css源码制作

css源码制作

CSS 源码制作基础 CSS(层叠样式表)用于控制网页的视觉表现,以下为制作 CSS 源码的核心方法: 文件创建与链接 新建 .css 文件(如 style.css),通过 <link>…