-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsubjects.php
More file actions
121 lines (104 loc) · 4.06 KB
/
Copy pathsubjects.php
File metadata and controls
121 lines (104 loc) · 4.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
session_start();
require_once 'db.php';
// 检查用户是否已登录
if (!isset($_SESSION['user_email'])) {
header("Location: regLog.html");
exit();
}
// 检查是否存在class_id
if (!isset($_GET['class_id'])) {
echo '班级ID不存在';
exit();
}
// 获取class_id并转换为整数
$class_id = (int) $_GET['class_id'];
// 获取当前会话中的用户ID
$user_id = isset($_SESSION['user_id']) ? (int) $_SESSION['user_id'] : 0;
if ($user_id === 0) {
echo '用户未登录';
exit();
}
// 查询班级信息
$query = "SELECT class_headteacher, class_teacher FROM classes WHERE class_id = :class_id";
$stmt = $pdo->prepare($query);
$stmt->bindParam(':class_id', $class_id, PDO::PARAM_INT);
$stmt->execute();
// 获取查询结果
$class = $stmt->fetch(PDO::FETCH_ASSOC);
if ($class === false) {
echo '班级不存在';
exit();
}
$class_headteacher = $class['class_headteacher'];
$class_teachers = json_decode($class['class_teacher'], true); // 假设class_teacher是存储教师ID的JSON数组
// 判断用户是否是班主任
$is_headteacher = ($user_id == $class_headteacher);
// 如果用户不是班主任,跳转
if (!$is_headteacher) {
echo '<h1>您无权访问此班级信息</h1>';
header("Location: panel.php");
exit();
}
// 获取班主任用户名
$query = "SELECT username FROM users WHERE id = :user_id";
$stmt = $pdo->prepare($query);
$stmt->bindParam(':user_id', $class_headteacher, PDO::PARAM_INT);
$stmt->execute();
$class_headteacher_name = $stmt->fetchColumn();
// 获取所有教师详细信息
$teachers = [];
foreach ($class_teachers as $teacher_id) {
$query = "SELECT id, username, subjects FROM users WHERE id = :teacher_id";
$stmt = $pdo->prepare($query);
$stmt->bindParam(':teacher_id', $teacher_id, PDO::PARAM_INT);
$stmt->execute();
$teacher = $stmt->fetch(PDO::FETCH_ASSOC);
if ($teacher) {
$teachers[] = $teacher;
}
}
// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$subjects = $_POST['subjects'] ?? [];
$teacher_id = $_POST['teacher_id'];
if (!empty($teacher_id) && !empty($subjects)) {
// 将学科数组转为 JSON 格式
$subjects_json = json_encode($subjects);
// 检查数据库中是否已经有该 teacher_id 和 class_id 的记录
$query = "SELECT * FROM teacher_subjects WHERE teacher_id = :teacher_id AND class_id = :class_id";
$stmt = $pdo->prepare($query);
$stmt->bindParam(':teacher_id', $teacher_id, PDO::PARAM_INT);
$stmt->bindParam(':class_id', $class_id, PDO::PARAM_INT);
$stmt->execute();
// 如果记录存在,更新该记录,否则插入新记录
if ($stmt->rowCount() > 0) {
// 更新操作
$query = "UPDATE teacher_subjects SET subject = :subject WHERE teacher_id = :teacher_id AND class_id = :class_id";
$stmt = $pdo->prepare($query);
$stmt->bindParam(':subject', $subjects_json, PDO::PARAM_STR);
$stmt->bindParam(':teacher_id', $teacher_id, PDO::PARAM_INT);
$stmt->bindParam(':class_id', $class_id, PDO::PARAM_INT);
$stmt->execute();
echo "学科更新成功!";
header("Location: classManager.php?class_id={$class_id}");
exit();
} else {
// 插入操作
$query = "INSERT INTO teacher_subjects (class_id, teacher_id, subject) VALUES (:class_id, :teacher_id, :subject)";
$stmt = $pdo->prepare($query);
$stmt->bindParam(':class_id', $class_id, PDO::PARAM_INT);
$stmt->bindParam(':teacher_id', $teacher_id, PDO::PARAM_INT);
$stmt->bindParam(':subject', $subjects_json, PDO::PARAM_STR);
$stmt->execute();
echo "学科分配成功!";
header("Location: classManager.php?class_id={$class_id}");
exit();
}
} else {
echo "请选择教师和科目。";
header("Location: classManager.php?class_id={$class_id}");
exit();
}
}
?>