-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclass.php
More file actions
324 lines (275 loc) · 11.1 KB
/
class.php
File metadata and controls
324 lines (275 loc) · 11.1 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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
<?php
// error_reporting(E_ALL);
// ini_set('display_errors', 1);
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_teacher = $class['class_teacher'];
// 检查用户是否为班主任或教师
$is_headteacher = ($user_id == $class_headteacher);
$is_teacher = false;
if (!empty($class_teacher)) {
$teacher_ids = json_decode($class_teacher, true);
if (in_array($user_id, $teacher_ids)) {
$is_teacher = true;
}
}
// 如果不是班主任或教师,返回错误信息
if (!$is_headteacher && !$is_teacher) {
echo '您不是该班级的教师';
exit();
}
$query = "SELECT subject FROM teacher_subjects WHERE teacher_id = :teacher_id AND class_id = :class_id";
$stmt = $pdo->prepare($query);
// 绑定参数
$stmt->bindParam(':teacher_id', $user_id, PDO::PARAM_INT);
$stmt->bindParam(':class_id', $class_id, PDO::PARAM_INT);
// 执行查询
$stmt->execute();
// 获取查询结果
$subjects = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (empty($subjects)) {
echo '您没有所授学科';
exit();
}
// 将 \uXXXX 转换为正常字符
function decode_unicode($string) {
return preg_replace_callback('/\\\u([0-9a-f]{4})/i', function ($matches) {
return mb_convert_encoding(pack('H*', $matches[1]), 'UTF-8', 'UCS-2');
}, $string);
}
// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$subject = $_POST['subject'];
$assignment_text = $_POST['assignment_text'];
$class_id = (int) $_POST['class_id'];
$date = date('Y-m-d'); // 获取当前日期
// 检查当天是否已经提交该科目的作业
$query = "SELECT assignment_id FROM assignments WHERE class_id = :class_id AND subject = :subject AND date = :date";
$stmt = $pdo->prepare($query);
$stmt->bindParam(':class_id', $class_id, PDO::PARAM_INT);
$stmt->bindParam(':subject', $subject, PDO::PARAM_STR);
$stmt->bindParam(':date', $date, PDO::PARAM_STR);
$stmt->execute();
$existing_assignment = $stmt->fetch(PDO::FETCH_ASSOC);
// 如果当天已存在该作业,更新作业内容,否则插入新作业
if ($existing_assignment) {
// 更新作业
$query = "UPDATE assignments SET assignment_text = :assignment_text, teacher_id = :teacher_id WHERE assignment_id = :assignment_id";
$stmt = $pdo->prepare($query);
$stmt->bindParam(':assignment_text', $assignment_text, PDO::PARAM_STR);
$stmt->bindParam(':teacher_id', $user_id, PDO::PARAM_STR);
$stmt->bindParam(':assignment_id', $existing_assignment['assignment_id'], PDO::PARAM_INT);
if ($stmt->execute()) {
echo '作业更新成功';
echo '<script>setTimeout(function(){window.location.href="class.php?class_id=' . $class_id . '";}, 2000);</script>';
exit();
} else {
echo '作业更新失败';
echo '<script>setTimeout(function(){window.location.href="class.php?class_id=' . $class_id . '";}, 2000);</script>';
exit();
}
} else {
// 插入新作业
$query = "INSERT INTO assignments (teacher_id, class_id, subject, assignment_text, date)
VALUES (:teacher_id, :class_id, :subject, :assignment_text, :date)";
$stmt = $pdo->prepare($query);
$stmt->bindParam(':teacher_id', $user_id, PDO::PARAM_INT);
$stmt->bindParam(':class_id', $class_id, PDO::PARAM_INT);
$stmt->bindParam(':subject', $subject, PDO::PARAM_STR);
$stmt->bindParam(':assignment_text', $assignment_text, PDO::PARAM_STR);
$stmt->bindParam(':date', $date, PDO::PARAM_STR);
if ($stmt->execute()) {
echo '作业提交成功';
echo '<script>setTimeout(function(){window.location.href="class.php?class_id=' . $class_id . '";}, 2000);</script>';
exit();
} else {
echo '作业提交失败';
echo '<script>setTimeout(function(){window.location.href="class.php?class_id=' . $class_id . '";}, 2000);</script>';
exit();
}
}
}
?>
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>提交作业</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/mdui@0.4.3/dist/css/mdui.min.css">
<style>
/* 调整作业内容输入框的大小 */
#assignment_text {
height: 300px; /* 设置更大的高度 */
}
/* 按钮容器使用 flexbox 布局 */
.button-container {
display: flex;
justify-content: space-between; /* 按钮之间均匀分布 */
margin-top: 20px;
}
/* 自定义刷新按钮样式为红色 */
#refresh-assignment {
background-color: red;
color: white;
flex: 1; /* 按钮占据相等空间 */
margin-left: 10px; /* 设置按钮间的间距 */
}
/* 提交按钮样式 */
#submit-assignment {
flex: 1; /* 按钮占据相等空间 */
}
/* 页面背景 */
body {
background-color: #f7f7f7;
}
/* 内容框样式 */
.mdui-container {
background-color: white;
border-radius: 8px;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
padding: 20px;
}
/* 页面标题样式 */
.mdui-typo-headline {
margin-bottom: 20px;
text-align: center;
}
/* 修改选择框和文本框的外观 */
.mdui-textfield-input, .mdui-select {
font-size: 1rem;
padding: 10px;
}
/* 按钮增加圆角 */
.mdui-btn {
border-radius: 5px;
}
/* 增加页面的内边距 */
.container {
padding: 20px;
}
</style>
</head>
<body class="mdui-theme-primary-indigo mdui-theme-accent-pink">
<div class="mdui-container mdui-m-t-5">
<div class="mdui-typo-headline"><a href="panel.php" class="mdui-typo-title mdui-text-color-theme">面板(点这里返回)</a> / 提交作业</div>
<form action="class.php?class_id=<?php echo $class_id; ?>" method="POST">
<!-- 作业学科选择 -->
<div class="mdui-textfield mdui-textfield-floating-label">
<label for="subject">选择学科</label>
<select class="mdui-select" name="subject" id="subject" required style="text-align: center;">
<?php foreach ($subjects as $subject):
$subject_names = json_decode(decode_unicode($subject['subject']), true);
foreach ($subject_names as $name): ?>
<option value="<?php echo htmlspecialchars($name); ?>">
<?php echo htmlspecialchars($name); ?>
</option>
<?php endforeach;
endforeach; ?>
</select>
</div>
<!-- 作业内容 -->
<div class="mdui-textfield mdui-textfield-floating-label">
<label for="assignment_text">作业内容</label>
<textarea class="mdui-textfield-input" name="assignment_text" id="assignment_text" required></textarea>
</div>
<input type="hidden" name="class_id" value="<?php echo $class_id; ?>">
<!-- 按钮容器,两个按钮并排显示并对齐 -->
<div class="button-container">
<button type="button" class="mdui-btn mdui-btn-raised mdui-color-red" id="refresh-assignment">刷新作业</button>
<button type="submit" class="mdui-btn mdui-btn-raised mdui-color-theme" id="submit-assignment">提交作业</button>
</div>
</form>
</div>
<script src="https://cdn.jsdelivr.net/npm/mdui@0.4.3/dist/js/mdui.min.js"></script>
<script>
// 获取选择的科目并根据选择获取对应的作业内容
document.getElementById('subject').addEventListener('change', function() {
var subject = this.value;
var classId = <?php echo $class_id; ?>; // 当前班级ID
// 发送 AJAX 请求获取作业内容
fetch('get_assignment.php?class_id=' + classId + '&subject=' + encodeURIComponent(subject))
.then(response => response.json())
.then(data => {
// 如果返回了作业内容,则填充文本框
if (data.assignment_text !== undefined) {
document.getElementById('assignment_text').value = data.assignment_text;
} else {
document.getElementById('assignment_text').value = '';
}
})
.catch(error => {
console.error('获取作业内容时发生错误:', error);
});
});
// 刷新作业按钮点击事件
document.getElementById('refresh-assignment').addEventListener('click', function() {
var subject = document.getElementById('subject').value;
var classId = <?php echo $class_id; ?>; // 当前班级ID
// 发送 AJAX 请求获取作业内容
fetch('get_assignment.php?class_id=' + classId + '&subject=' + encodeURIComponent(subject))
.then(response => response.json())
.then(data => {
// 如果返回了作业内容,则填充文本框
if (data.assignment_text !== undefined) {
document.getElementById('assignment_text').value = data.assignment_text;
} else {
document.getElementById('assignment_text').value = '';
}
})
.catch(error => {
console.error('获取作业内容时发生错误:', error);
});
});
// 如果页面第一次加载,自动获取作业内容
document.addEventListener('DOMContentLoaded', function() {
var subject = document.getElementById('subject').value;
var classId = <?php echo $class_id; ?>; // 当前班级ID
// 发送 AJAX 请求获取作业内容
fetch('get_assignment.php?class_id=' + classId + '&subject=' + encodeURIComponent(subject))
.then(response => response.json())
.then(data => {
// 如果返回了作业内容,则填充文本框
if (data.assignment_text !== undefined) {
document.getElementById('assignment_text').value = data.assignment_text;
} else {
document.getElementById('assignment_text').value = '';
}
})
.catch(error => {
console.error('获取作业内容时发生错误:', error);
});
});
</script>
</body>
</html>