在这个数字化时代,在线教育已成为趋势。为了满足家长和学生便捷预约家教的需求,本文将详细介绍如何用PHP开发一个在线家教预约系统。
系统需求分析
首先,明确系统需求:
- 用户注册登录:家长和学生可以注册账号并登录。
- 家教信息展示:展示家教的基本信息、教学科目和评价。
- 预约功能:用户可预约特定时间的家教课程。
- 通知系统:预约成功后,双方收到通知。
- 评价系统:课程结束后,用户可对家教进行评价。
技术栈选择
- 后端:PHP + MySQL
- 前端:HTML + CSS + JavaScript
- 框架:可选使用Laravel或CodeIgniter简化开发
数据库设计
设计以下主要表结构:
-
users:存储用户信息
- id, username, password, role (家长/学生/家教)
-
tutors:存储家教信息
- id, user_id, subject, bio, rating
-
appointments:存储预约信息
- id, user_id, tutor_id, datetime, status
-
reviews:存储评价信息
- id, user_id, tutor_id, rating, comment
后端实现
用户注册登录
使用PHP处理用户注册和登录请求,密码使用md5或更安全的bcrypt加密。
// 注册用户
if ($_POST['action'] == 'register') {
$username = $_POST['username'];
$password = md5($_POST['password']);
$role = $_POST['role'];
$query = "INSERT INTO users (username, password, role) VALUES ('$username', '$password', '$role')";
mysqli_query($conn, $query);
}
// 登录用户
if ($_POST['action'] == 'login') {
$username = $_POST['username'];
$password = md5($_POST['password']);
$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = mysqli_query($conn, $query);
$user = mysqli_fetch_assoc($result);
if ($user) {
$_SESSION['user'] = $user;
}
}
家教信息展示
查询家教信息并返回JSON数据供前端展示。
// 获取家教列表
if ($_GET['action'] == 'getTutors') {
$query = "SELECT * FROM tutors";
$result = mysqli_query($conn, $query);
$tutors = mysqli_fetch_all($result, MYSQLI_ASSOC);
echo json_encode($tutors);
}
预约功能
处理用户预约请求,并插入预约记录。
// 预约家教
if ($_POST['action'] == 'appoint') {
$user_id = $_SESSION['user']['id'];
$tutor_id = $_POST['tutor_id'];
$datetime = $_POST['datetime'];
$query = "INSERT INTO appointments (user_id, tutor_id, datetime, status) VALUES ('$user_id', '$tutor_id', '$datetime', 'pending')";
mysqli_query($conn, $query);
}
前端实现
使用HTML表单收集用户输入,JavaScript处理异步请求。
<!-- 注册表单 -->
<form id="registerForm">
<input type="text" name="username" placeholder="用户名">
<input type="password" name="password" placeholder="密码">
<select name="role">
<option value="student">学生</option>
<option value="parent">家长</option>
</select>
<button type="submit">注册</button>
</form>
<script>
document.getElementById('registerForm').addEventListener('submit', function(e) {
e.preventDefault();
var formData = new FormData(this);
formData.append('action', 'register');
fetch('api.php', {
method: 'POST',
body: formData
}).then(response => response.json())
.then(data => console.log(data));
});
</script>
通知系统
使用邮件或短信API通知用户预约成功。
// 发送通知
if ($_POST['action'] == 'sendNotification') {
$user_email = $_POST['user_email'];
$message = "您的预约已成功!";
mail($user_email, "预约通知", $message);
}
评价系统
课程结束后,用户可提交评价。
// 提交评价
if ($_POST['action'] == 'review') {
$user_id = $_SESSION['user']['id'];
$tutor_id = $_POST['tutor_id
评论(0)