php实现预约挂号
PHP实现预约挂号系统
预约挂号系统通常涉及用户注册、医生信息管理、预约时间选择、预约记录查询等功能。以下是基于PHP的实现方法:
数据库设计 创建MySQL数据库表结构,例如:
users表存储用户信息(id, name, phone, password等)doctors表存储医生信息(id, name, department, specialty等)schedules表存储排班信息(id, doctor_id, date, time_slot等)appointments表存储预约记录(id, user_id, doctor_id, schedule_id, status等)
用户注册与登录
// 用户注册
function registerUser($name, $phone, $password) {
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
// 插入数据库逻辑
}
// 用户登录
function loginUser($phone, $password) {
// 查询数据库验证用户
if (password_verify($password, $hashed_password)) {
$_SESSION['user_id'] = $user_id;
return true;
}
return false;
}
医生排班管理
// 添加医生排班
function addSchedule($doctor_id, $date, $time_slot) {
// 检查时间冲突
// 插入排班记录
}
// 获取可预约时段
function getAvailableSlots($department, $date) {
$sql = "SELECT * FROM schedules
WHERE date = '$date'
AND doctor_id IN (SELECT id FROM doctors WHERE department = '$department')
AND id NOT IN (SELECT schedule_id FROM appointments WHERE status = 'confirmed')";
// 执行查询并返回结果
}
预约功能实现
// 创建预约
function createAppointment($user_id, $schedule_id) {
// 检查时段是否可用
// 创建预约记录
$sql = "INSERT INTO appointments (user_id, schedule_id, status)
VALUES ($user_id, $schedule_id, 'confirmed')";
}
// 取消预约
function cancelAppointment($appointment_id) {
$sql = "UPDATE appointments SET status = 'cancelled' WHERE id = $appointment_id";
}
预约查询功能
// 用户查询自己的预约
function getUserAppointments($user_id) {
$sql = "SELECT a.id, d.name as doctor_name, s.date, s.time_slot
FROM appointments a
JOIN schedules s ON a.schedule_id = s.id
JOIN doctors d ON s.doctor_id = d.id
WHERE a.user_id = $user_id AND a.status = 'confirmed'";
}
// 管理员查询所有预约
function getAllAppointments() {
$sql = "SELECT a.id, u.name as user_name, d.name as doctor_name, s.date, s.time_slot, a.status
FROM appointments a
JOIN users u ON a.user_id = u.id
JOIN schedules s ON a.schedule_id = s.id
JOIN doctors d ON s.doctor_id = d.id";
}
安全注意事项
- 使用预处理语句防止SQL注入
- 对用户输入进行验证和过滤
- 重要操作如预约/取消需要权限验证
- 敏感数据如密码必须加密存储
前端界面建议
- 日历控件选择日期
- 下拉菜单选择科室和医生
- 表格展示可预约时段
- 分页显示预约记录
该系统可以进一步扩展功能如:

- 短信通知预约成功
- 预约时间段限制(如提前1天取消)
- 医生停诊自动取消预约
- 候补预约队列功能






