当前位置:首页 > PHP

php实现选课

2026-02-14 17:36:34PHP

PHP实现选课系统的基本方法

创建一个基于PHP的选课系统需要结合数据库操作、用户验证和前端交互。以下是关键实现步骤:

数据库设计 创建必要的数据库表,例如:

php实现选课

  • students(学生信息)
  • courses(课程信息)
  • enrollments(选课记录)
CREATE TABLE students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    email VARCHAR(100) UNIQUE,
    password VARCHAR(255)
);

CREATE TABLE courses (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    teacher VARCHAR(100),
    credit INT,
    capacity INT
);

CREATE TABLE enrollments (
    id INT PRIMARY KEY AUTO_INCREMENT,
    student_id INT,
    course_id INT,
    enrollment_date DATETIME,
    FOREIGN KEY (student_id) REFERENCES students(id),
    FOREIGN KEY (course_id) REFERENCES courses(id)
);

用户认证系统 实现学生登录功能,使用PHP的session机制:

session_start();

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $email = $_POST['email'];
    $password = $_POST['password'];

    // 验证用户
    $stmt = $pdo->prepare("SELECT * FROM students WHERE email = ?");
    $stmt->execute([$email]);
    $user = $stmt->fetch();

    if ($user && password_verify($password, $user['password'])) {
        $_SESSION['user_id'] = $user['id'];
        header("Location: dashboard.php");
    }
}

课程列表展示 从数据库获取课程信息并显示:

php实现选课

$stmt = $pdo->query("SELECT * FROM courses");
$courses = $stmt->fetchAll();

foreach ($courses as $course) {
    echo "<div class='course'>";
    echo "<h3>{$course['name']}</h3>";
    echo "<p>教师: {$course['teacher']}</p>";
    echo "<p>学分: {$course['credit']}</p>";
    echo "<a href='enroll.php?course_id={$course['id']}'>选课</a>";
    echo "</div>";
}

选课功能实现 处理选课请求并更新数据库:

if (isset($_GET['course_id']) && isset($_SESSION['user_id'])) {
    $courseId = $_GET['course_id'];
    $studentId = $_SESSION['user_id'];

    // 检查是否已选
    $stmt = $pdo->prepare("SELECT * FROM enrollments WHERE student_id = ? AND course_id = ?");
    $stmt->execute([$studentId, $courseId]);

    if ($stmt->rowCount() == 0) {
        // 检查课程容量
        $stmt = $pdo->prepare("SELECT COUNT(*) FROM enrollments WHERE course_id = ?");
        $stmt->execute([$courseId]);
        $enrolled = $stmt->fetchColumn();

        $stmt = $pdo->prepare("SELECT capacity FROM courses WHERE id = ?");
        $stmt->execute([$courseId]);
        $capacity = $stmt->fetchColumn();

        if ($enrolled < $capacity) {
            // 添加选课记录
            $stmt = $pdo->prepare("INSERT INTO enrollments (student_id, course_id, enrollment_date) VALUES (?, ?, NOW())");
            $stmt->execute([$studentId, $courseId]);
            echo "选课成功";
        } else {
            echo "课程已满";
        }
    } else {
        echo "已选该课程";
    }
}

选课结果查询 显示学生已选课程:

$stmt = $pdo->prepare("
    SELECT c.* FROM courses c
    JOIN enrollments e ON c.id = e.course_id
    WHERE e.student_id = ?
");
$stmt->execute([$_SESSION['user_id']]);
$enrolledCourses = $stmt->fetchAll();

foreach ($enrolledCourses as $course) {
    echo "<div>{$course['name']} - {$course['teacher']}</div>";
}

系统安全注意事项

  • 使用预处理语句防止SQL注入
  • 对用户输入进行验证和过滤
  • 密码使用password_hash()加密存储
  • 重要操作需要验证用户权限
  • 使用HTTPS保护数据传输

扩展功能建议

  1. 添加课程搜索功能
  2. 实现退课功能
  3. 添加课程时间冲突检测
  4. 开发教师管理界面
  5. 添加选课时间限制功能
  6. 实现选课结果导出

以上代码示例展示了PHP选课系统的核心功能实现,实际开发中需要根据具体需求进行调整和完善。

标签: php
分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (int…

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…

php实现定时

php实现定时

PHP 实现定时任务的方法 PHP 本身是脚本语言,通常需要借助外部工具或框架实现定时任务。以下是几种常见方法: 使用 Cron 任务 Linux 系统自带的 Cron 是常用的定时任务工具。通过编…