当前位置:首页 > 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中实现打印功能可以通过多种方式完成,包括直接输出到浏览器、生成PDF文件、调用打印机接口等。以下是几种常见的方法: 直接输出HTML内容 PHP可以通过echo或p…

css网页尾部制作

css网页尾部制作

制作CSS网页尾部的步骤 设计尾部布局 使用<footer>标签定义尾部区域,确保包含版权信息、联系方式、社交媒体链接等必要元素。通过CSS设置背景色、内边距和边框样式增强视觉效果。 基…

php 队列的实现

php 队列的实现

PHP 队列的实现方法 使用数据库实现队列 创建一个数据表存储队列任务,包含任务ID、状态、创建时间等字段。通过SQL语句实现任务的入队和出队操作。 // 入队操作 INSERT INTO queu…

php实现注册登录

php实现注册登录

PHP 注册功能实现 创建数据库表(以 MySQL 为例) CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, usern…

php 实现聊天功能

php 实现聊天功能

PHP 实现聊天功能的方法 使用 WebSocket 和 Ratchet 库 WebSocket 是实现实时聊天的理想选择。Ratchet 是一个 PHP 库,用于处理 WebSocket 连接。…

php实现投票

php实现投票

PHP实现投票功能 数据库设计 创建数据库表存储投票数据,例如: CREATE TABLE `votes` ( `id` int(11) NOT NULL AUTO_INCREMENT,…