php实现叫号系统
实现叫号系统的核心功能
叫号系统通常用于医院、银行等场景,主要功能包括号码生成、叫号、状态更新等。以下是一个基于PHP和MySQL的简单实现方案。
数据库设计
创建数据库表queue_system,包含以下字段:
CREATE TABLE queue_system (
id INT AUTO_INCREMENT PRIMARY KEY,
ticket_number VARCHAR(20) NOT NULL,
status ENUM('waiting', 'called', 'completed') DEFAULT 'waiting',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
called_at TIMESTAMP NULL
);
生成号码功能
通过PHP脚本生成新号码:
function generateTicket() {
$prefix = date('Ymd');
$lastNumber = getLastTicketNumber($prefix);
$newNumber = $prefix . str_pad($lastNumber + 1, 4, '0', STR_PAD_LEFT);
$conn = new mysqli('localhost', 'username', 'password', 'database');
$stmt = $conn->prepare("INSERT INTO queue_system (ticket_number) VALUES (?)");
$stmt->bind_param("s", $newNumber);
$stmt->execute();
return $newNumber;
}
叫号功能
实现叫号逻辑:
function callNextTicket() {
$conn = new mysqli('localhost', 'username', 'password', 'database');
$result = $conn->query("SELECT id, ticket_number FROM queue_system
WHERE status = 'waiting'
ORDER BY created_at ASC LIMIT 1");
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$conn->query("UPDATE queue_system SET status = 'called',
called_at = NOW() WHERE id = {$row['id']}");
return $row['ticket_number'];
}
return null;
}
显示当前状态
展示等待队列和已叫号码:
function getQueueStatus() {
$conn = new mysqli('localhost', 'username', 'password', 'database');
$waiting = $conn->query("SELECT ticket_number FROM queue_system
WHERE status = 'waiting'
ORDER BY created_at ASC");
$called = $conn->query("SELECT ticket_number FROM queue_system
WHERE status = 'called'
ORDER BY called_at DESC LIMIT 5");
return [
'waiting' => $waiting->fetch_all(MYSQLI_ASSOC),
'called' => $called->fetch_all(MYSQLI_ASSOC)
];
}
前端界面示例
简单的HTML界面展示:
<div class="queue-display">
<h3>当前叫号: <span id="current-number">-</span></h3>
<button onclick="callNext()">叫号</button>
</div>
<script>
function callNext() {
fetch('call_next.php')
.then(response => response.json())
.then(data => {
document.getElementById('current-number').textContent = data.number;
});
}
</script>
安全考虑
实现时应注意:
- 使用预处理语句防止SQL注入
- 对敏感操作添加权限验证
- 考虑使用事务处理关键操作
- 添加适当的错误处理机制
扩展功能
系统可进一步扩展:

- 添加多队列支持(不同业务类型)
- 实现声音提醒功能
- 添加预计等待时间计算
- 开发管理后台进行数据统计
这个基础实现可以根据具体需求进行调整和扩展,核心是维护好号码状态和提供清晰的叫号流程。






