当前位置:首页 > PHP

php实现选课网页

2026-03-13 07:05:31PHP

数据库设计

创建数据库表存储课程和学生信息,例如courses表(含id, name, credit等字段)和students表(含id, name, selected_courses等字段)。使用MySQL可通过以下SQL初始化:

CREATE TABLE courses (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    credit INT,
    capacity INT
);

CREATE TABLE students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    selected_courses TEXT -- 存储已选课程ID,如"1,3,5"
);

前端界面构建

使用HTML+CSS创建选课页面,包含课程列表展示和选课按钮。示例课程列表部分代码:

php实现选课网页

<div class="course-list">
    <?php foreach ($courses as $course): ?>
    <div class="course-item">
        <h3><?php echo $course['name']; ?></h3>
        <p>学分: <?php echo $course['credit']; ?></p>
        <button onclick="selectCourse(<?php echo $course['id']; ?>)">选课</button>
    </div>
    <?php endforeach; ?>
</div>

后端逻辑处理

通过PHP处理选课请求,验证课程容量并更新数据库。示例处理代码:

// select_course.php
$courseId = $_POST['course_id'];
$studentId = $_SESSION['student_id'];

// 检查课程容量
$course = $db->query("SELECT capacity FROM courses WHERE id = $courseId")->fetch();
if ($course['capacity'] > 0) {
    // 更新学生已选课程
    $db->exec("UPDATE students SET selected_courses = CONCAT(selected_courses,',$courseId') WHERE id = $studentId");
    // 减少课程容量
    $db->exec("UPDATE courses SET capacity = capacity - 1 WHERE id = $courseId");
    echo json_encode(['success' => true]);
} else {
    echo json_encode(['error' => '课程已满']);
}

会话管理

使用PHP会话跟踪登录状态和学生信息:

php实现选课网页

session_start();
// 登录验证后设置会话变量
$_SESSION['student_id'] = $studentId;
$_SESSION['student_name'] = $studentName;

选课冲突检查

在选课前通过SQL查询检查时间冲突:

// 假设有course_schedule表存储课程时间
$conflict = $db->query("
    SELECT COUNT(*) FROM course_schedule 
    WHERE course_id IN (SELECT selected_courses FROM students WHERE id = $studentId)
    AND time_slot = (SELECT time_slot FROM course_schedule WHERE course_id = $courseId)
")->fetchColumn();

if ($conflict > 0) {
    die(json_encode(['error' => '时间冲突']));
}

结果展示

创建已选课程页面,从数据库查询并显示学生已选课程:

$selected = $db->query("
    SELECT c.* FROM courses c 
    JOIN students s ON FIND_IN_SET(c.id, s.selected_courses)
    WHERE s.id = $studentId
")->fetchAll();

标签: 网页php
分享给朋友:

相关文章

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

git php实现

git php实现

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

php实现定时任务

php实现定时任务

PHP 实现定时任务的几种方法 在 PHP 中实现定时任务可以通过多种方式完成,具体选择取决于项目需求和服务器环境。以下是常见的实现方法: 使用 Cron 任务 Cron 是 Linux 系统中常用…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERVER…

php 实现单链表

php 实现单链表

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

php实现定时

php实现定时

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