当前位置:首页 > PHP

php实现在线预约系统

2026-02-28 03:34:37PHP

数据库设计

创建数据库表存储预约信息,通常包括用户ID、预约时间、服务类型、状态等字段。使用MySQL为例:

CREATE TABLE appointments (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    service_type VARCHAR(50) NOT NULL,
    appointment_time DATETIME NOT NULL,
    status ENUM('pending', 'confirmed', 'cancelled') DEFAULT 'pending',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

预约表单实现

构建HTML表单收集用户预约信息,包含服务类型选择和时间选择器:

<form action="book_appointment.php" method="post">
    <select name="service_type" required>
        <option value="consultation">咨询</option>
        <option value="checkup">检查</option>
    </select>
    <input type="datetime-local" name="appointment_time" required>
    <button type="submit">提交预约</button>
</form>

处理预约逻辑

创建PHP脚本处理表单提交,验证时间冲突并存入数据库:

<?php
$conn = new mysqli('localhost', 'username', 'password', 'database');
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $userId = $_SESSION['user_id'];
    $serviceType = $conn->real_escape_string($_POST['service_type']);
    $appointmentTime = $conn->real_escape_string($_POST['appointment_time']);

    // 检查时间是否可用
    $check = $conn->query("SELECT id FROM appointments 
                          WHERE appointment_time = '$appointmentTime'");
    if ($check->num_rows === 0) {
        $conn->query("INSERT INTO appointments 
                     (user_id, service_type, appointment_time) 
                     VALUES ($userId, '$serviceType', '$appointmentTime')");
        echo "预约成功";
    } else {
        echo "该时间段已被预约";
    }
}
?>

预约管理界面

创建管理员界面显示所有预约,支持状态修改:

$appointments = $conn->query("SELECT * FROM appointments ORDER BY appointment_time");
while ($row = $appointments->fetch_assoc()) {
    echo "ID: {$row['id']} 时间: {$row['appointment_time']} 
          状态: {$row['status']} 
          <a href='update_status.php?id={$row['id']}&status=confirmed'>确认</a>
          <a href='update_status.php?id={$row['id']}&status=cancelled'>取消</a><br>";
}

邮件通知功能

集成PHPMailer发送预约确认邮件:

require 'PHPMailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->setFrom('noreply@example.com');
$mail->addAddress($userEmail);
$mail->Subject = '预约确认';
$mail->Body = "您的预约已确认,时间:$appointmentTime";
$mail->send();

时间冲突检测

添加JavaScript前端验证防止选择过去时间:

document.querySelector('input[name="appointment_time"]').min = 
    new Date().toISOString().slice(0, 16);

安全性增强

对输入数据进行过滤和预处理,防止SQL注入:

php实现在线预约系统

$stmt = $conn->prepare("INSERT INTO appointments 
                       (user_id, service_type, appointment_time) 
                       VALUES (?, ?, ?)");
$stmt->bind_param("iss", $userId, $serviceType, $appointmentTime);
$stmt->execute();

标签: 在线系统
分享给朋友:

相关文章

vue实现平台系统

vue实现平台系统

Vue 实现平台系统的方法 项目初始化与配置 使用 Vue CLI 或 Vite 初始化项目,推荐 Vue 3 + TypeScript 组合。安装核心依赖: npm create vue@late…

Vue在线表格实现

Vue在线表格实现

Vue在线表格实现方案 使用Element UI的el-table组件 Element UI提供了功能强大的表格组件el-table,支持排序、筛选、分页等常见功能。安装Element UI后可直接使…

vue系统的实现

vue系统的实现

Vue 系统的实现方法 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是一些关键步骤和最佳实践,帮助实现一个基于 Vue 的系统。 环境搭建与项目初始化 安装 Nod…

vue实现word在线预览

vue实现word在线预览

Vue 实现 Word 文档在线预览 在 Vue 项目中实现 Word 文档在线预览,可以通过以下几种方法实现: 使用第三方库(如 mammoth.js) mammoth.js 是一个纯 JavaS…

react实现在线文档

react实现在线文档

React 实现在线文档的方法 使用 React 实现在线文档可以通过多种方式完成,以下是几种常见的方法和工具: 使用 Markdown 和 React 结合 Markdown 是一种轻量级标记语言…

php实现word在线预览

php实现word在线预览

使用PHP实现Word文档在线预览 PHP可以通过多种方式实现Word文档的在线预览,以下是几种常见的方法: 使用Google Docs Viewer Google Docs Viewer提供了一个…