当前位置:首页 > 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中实现文件上传需要使用$_FILES超全局数组处理上传的文件数据。表单必须设置enctype="multipart/form-data"属性,并采用POST方法提交。 创…

php 实现排序

php 实现排序

PHP 实现数组排序的方法 PHP 提供了多种内置函数和方法来实现数组排序,适用于不同的排序需求。以下是一些常见的排序实现方式: 使用 sort() 函数对数组进行升序排序 sort() 函数对数组…

php 实现单链表

php 实现单链表

单链表的基本概念 单链表是一种线性数据结构,由节点组成,每个节点包含数据域和指向下一个节点的指针域。链表的头节点是访问整个链表的入口。 单链表的节点类实现 在PHP中,可以通过类来定义链表节…

无限分类实现 php

无限分类实现 php

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、部门架构等。以下是几种常见的实现方式: 邻接列表模式(Adjacency List) 邻接列表是最简单的实现方式,通过在每个记录…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…

php 实现锁

php 实现锁

PHP 实现锁的常见方法 文件锁(flock) 利用 flock 函数对文件进行独占锁定,适用于单机环境。 $fp = fopen("lockfile.lock", "w+"); if (f…