php实现选课网页
实现选课网页的基本步骤
创建一个基于PHP的选课网页需要结合前端HTML/CSS、后端PHP以及数据库操作。以下是关键实现步骤:
数据库设计
创建数据库表存储课程和学生信息,例如:
courses表:包含课程ID、名称、教师、容量等字段students表:学生基本信息enrollments表:记录学生选课关系
SQL示例:
CREATE TABLE courses (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
teacher VARCHAR(50),
capacity INT,
current_enrollment INT DEFAULT 0
);
前端界面设计
使用HTML表单展示可选课程列表,包含选择按钮:
<form action="enroll.php" method="post">
<h3>可选课程列表</h3>
<table>
<tr>
<th>课程名称</th>
<th>授课教师</th>
<th>剩余名额</th>
<th>操作</th>
</tr>
<?php foreach($courses as $course): ?>
<tr>
<td><?php echo $course['name']; ?></td>
<td><?php echo $course['teacher']; ?></td>
<td><?php echo $course['capacity'] - $course['current_enrollment']; ?></td>
<td><input type="checkbox" name="selected_courses[]" value="<?php echo $course['id']; ?>"></td>
</tr>
<?php endforeach; ?>
</table>
<input type="submit" value="提交选课">
</form>
后端处理逻辑
创建enroll.php处理选课请求:
<?php
session_start();
require 'db_connect.php'; // 数据库连接文件
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$student_id = $_SESSION['student_id']; // 假设学生已登录
$selected_courses = $_POST['selected_courses'];
foreach ($selected_courses as $course_id) {
// 检查课程是否已满
$check_sql = "SELECT capacity, current_enrollment FROM courses WHERE id = ?";
$stmt = $conn->prepare($check_sql);
$stmt->bind_param("i", $course_id);
$stmt->execute();
$result = $stmt->get_result();
$course = $result->fetch_assoc();
if ($course['current_enrollment'] < $course['capacity']) {
// 插入选课记录
$insert_sql = "INSERT INTO enrollments (student_id, course_id) VALUES (?, ?)";
$stmt = $conn->prepare($insert_sql);
$stmt->bind_param("ii", $student_id, $course_id);
$stmt->execute();
// 更新课程当前人数
$update_sql = "UPDATE courses SET current_enrollment = current_enrollment + 1 WHERE id = ?";
$stmt = $conn->prepare($update_sql);
$stmt->bind_param("i", $course_id);
$stmt->execute();
}
}
header("Location: course_selection.php?status=success");
exit();
}
?>
安全措施
实现必要的安全防护:
- 使用预处理语句防止SQL注入
- 验证用户登录状态和权限
- 对输入数据进行过滤和验证
- 实施CSRF防护措施
扩展功能
根据需求可添加:
- 选课时间限制功能
- 课程冲突检测
- 退课功能
- 选课结果统计和导出
以上代码提供了基本框架,实际应用中需要根据具体需求进行调整和完善。建议使用MVC框架如Laravel或CodeIgniter来构建更复杂的选课系统。







