PHP实现预约
PHP预约系统实现方法
创建预约系统需要处理用户输入、数据存储和验证。以下是一个基本的PHP预约系统实现框架:
数据库表结构
CREATE TABLE appointments (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL,
phone VARCHAR(20) NOT NULL,
date DATE NOT NULL,
time TIME NOT NULL,
service VARCHAR(100) NOT NULL,
notes TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
预约表单HTML

<form action="book.php" method="post">
<input type="text" name="name" placeholder="姓名" required>
<input type="email" name="email" placeholder="邮箱" required>
<input type="tel" name="phone" placeholder="电话" required>
<input type="date" name="date" required>
<input type="time" name="time" required>
<select name="service" required>
<option value="">选择服务</option>
<option value="咨询">咨询</option>
<option value="体检">体检</option>
</select>
<textarea name="notes" placeholder="备注"></textarea>
<button type="submit">提交预约</button>
</form>
处理预约的PHP脚本(book.php)
<?php
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=appointments', 'username', 'password');
// 验证输入
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
$phone = filter_input(INPUT_POST, 'phone', FILTER_SANITIZE_STRING);
$date = filter_input(INPUT_POST, 'date', FILTER_SANITIZE_STRING);
$time = filter_input(INPUT_POST, 'time', FILTER_SANITIZE_STRING);
$service = filter_input(INPUT_POST, 'service', FILTER_SANITIZE_STRING);
$notes = filter_input(INPUT_POST, 'notes', FILTER_SANITIZE_STRING);
// 检查时间冲突
$stmt = $db->prepare("SELECT COUNT(*) FROM appointments WHERE date = ? AND time = ?");
$stmt->execute([$date, $time]);
$conflicts = $stmt->fetchColumn();
if ($conflicts > 0) {
die("该时间段已被预约,请选择其他时间");
}
// 插入数据库
$stmt = $db->prepare("INSERT INTO appointments (name, email, phone, date, time, service, notes) VALUES (?, ?, ?, ?, ?, ?, ?)");
$success = $stmt->execute([$name, $email, $phone, $date, $time, $service, $notes]);
if ($success) {
header("Location: success.html");
} else {
echo "预约失败,请重试";
}
?>
预约系统功能扩展
发送确认邮件

$to = $email;
$subject = "预约确认";
$message = "尊敬的$name,您的$service预约已确认\n日期:$date\n时间:$time";
$headers = "From: noreply@example.com";
mail($to, $subject, $message, $headers);
管理员界面 创建管理员界面查看和管理预约:
$stmt = $db->query("SELECT * FROM appointments ORDER BY date, time");
$appointments = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($appointments as $app) {
echo "<tr>
<td>{$app['name']}</td>
<td>{$app['date']} {$app['time']}</td>
<td>{$app['service']}</td>
<td><a href='delete.php?id={$app['id']}'>取消</a></td>
</tr>";
}
安全注意事项
验证所有用户输入,防止SQL注入 使用预处理语句处理数据库查询 对敏感数据进行加密存储 实现CSRF保护机制 设置适当的访问控制权限
这个基本框架可以根据具体需求进行扩展,如添加用户账户系统、支付集成、短信通知等功能。






