当前位置:首页 > PHP

php实现在线预约系统

2026-04-03 12:32:02PHP

数据库设计

创建数据库表存储预约信息,通常包括用户信息、预约时间、服务类型等字段。示例SQL语句:

CREATE TABLE appointments (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_name VARCHAR(100) NOT NULL,
    user_email VARCHAR(100) NOT NULL,
    service_type VARCHAR(50) NOT NULL,
    appointment_date DATE NOT NULL,
    appointment_time TIME NOT NULL,
    status ENUM('pending', 'confirmed', 'cancelled') DEFAULT 'pending',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

预约表单页面

创建HTML表单收集用户预约信息,包含必要验证:

<form action="process_booking.php" method="post">
    <input type="text" name="name" placeholder="姓名" required>
    <input type="email" name="email" placeholder="邮箱" required>
    <select name="service" required>
        <option value="">选择服务类型</option>
        <option value="consultation">咨询</option>
        <option value="checkup">检查</option>
    </select>
    <input type="date" name="date" min="<?= date('Y-m-d') ?>" required>
    <input type="time" name="time" required>
    <button type="submit">提交预约</button>
</form>

处理预约逻辑

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

php实现在线预约系统

<?php
$conn = new mysqli('localhost', 'username', 'password', 'booking_system');

$name = $_POST['name'];
$email = $_POST['email'];
$service = $_POST['service'];
$date = $_POST['date'];
$time = $_POST['time'];

$stmt = $conn->prepare("INSERT INTO appointments (user_name, user_email, service_type, appointment_date, appointment_time) VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param("sssss", $name, $email, $service, $date, $time);
$stmt->execute();

header("Location: confirmation.php");
?>

预约冲突检查

在插入数据库前检查时间是否已被占用:

$check = $conn->prepare("SELECT id FROM appointments WHERE appointment_date = ? AND appointment_time = ?");
$check->bind_param("ss", $date, $time);
$check->execute();
if ($check->get_result()->num_rows > 0) {
    die("该时间段已被预约");
}

管理员界面

创建后台管理界面查看和管理预约:

php实现在线预约系统

$result = $conn->query("SELECT * FROM appointments ORDER BY appointment_date, appointment_time");
while ($row = $result->fetch_assoc()) {
    echo "<tr>
        <td>{$row['user_name']}</td>
        <td>{$row['appointment_date']} {$row['appointment_time']}</td>
        <td>{$row['service_type']}</td>
        <td>{$row['status']}</td>
    </tr>";
}

邮件通知

使用PHPMailer发送预约确认邮件:

require 'PHPMailer/PHPMailer.php';
$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->setFrom('noreply@example.com');
$mail->addAddress($email);
$mail->Subject = '预约确认';
$mail->Body = "尊敬的{$name},您的{$service}预约已确认,时间:{$date} {$time}";
$mail->send();

安全防护

添加基础安全措施防止SQL注入和XSS攻击:

function sanitize($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

系统可根据需求扩展功能如:预约提醒、用户登录系统、支付集成、多语言支持等。

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

相关文章

vue实现word在线

vue实现word在线

Vue 实现 Word 在线编辑与预览 使用 docx.js 库解析和生成 Word 文档 docx.js 是一个纯 JavaScript 库,可以在浏览器中生成和操作 Word 文档(.docx 格…

uniapp推荐系统

uniapp推荐系统

基于UniApp的推荐系统实现方案 UniApp作为跨平台开发框架,可通过以下方式实现推荐系统功能: 数据驱动推荐算法 通过用户行为数据(浏览、收藏、购买等)构建用户画像,采用协同过滤算法或内容相似…

vue实现登录系统

vue实现登录系统

Vue 登录系统实现步骤 前端部分 安装依赖 确保项目已安装 Vue 3 和必要的库(如 axios、vue-router): npm install axios vue-router 路由配置 在…

vue实现html在线预览

vue实现html在线预览

Vue 实现 HTML 在线预览的方法 使用 v-html 指令 Vue 提供了 v-html 指令,可以将字符串解析为 HTML 并渲染到页面中。 注意:直接使用 v-html 可能存在 XSS 风…

css3在线动画制作

css3在线动画制作

CSS3 在线动画制作工具 以下是一些常用的在线工具,可以帮助快速生成CSS3动画代码,无需手动编写全部代码: Animista 网址:https://animista.net/ 特点:提供预设的C…

在线css导航制作

在线css导航制作

CSS导航制作方法 使用HTML和CSS创建一个简单的在线导航栏,可以通过以下步骤实现。这里提供一个基础的横向导航栏示例。 HTML结构 <nav class="navbar">…