🚀 ระบบจัดการคิวและเรียกคิวของธนาคาร (PHP + MySQL)
🔥 ฟีเจอร์หลัก
✅ ลูกค้ากดรับบัตรคิวผ่านระบบ
✅ เจ้าหน้าที่เรียกคิวตามลำดับ
✅ รองรับหลายเคาน์เตอร์ (Counter)
✅ อัปเดตสถานะคิวแบบเรียลไทม์
✅ แจ้งเตือนเสียงเมื่อเรียกคิว
📌 1. สร้างฐานข้อมูล MySQL
CREATE DATABASE bank_queue;
USE bank_queue;
-- ตารางเก็บข้อมูลคิว
CREATE TABLE queue (
id INT AUTO_INCREMENT PRIMARY KEY,
queue_number INT NOT NULL UNIQUE,
status ENUM('waiting', 'serving', 'completed') DEFAULT 'waiting',
counter_number INT DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
📌 2. เชื่อมต่อฐานข้อมูล (db.php
)
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "bank_queue";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("เชื่อมต่อฐานข้อมูลล้มเหลว: " . $conn->connect_error);
}
?>
📌 3. ระบบรับบัตรคิว (get_queue.php
)
<?php
include 'db.php';
// หาคิวล่าสุด
$result = $conn->query("SELECT MAX(queue_number) AS last_queue FROM queue");
$row = $result->fetch_assoc();
$last_queue = $row['last_queue'] ? $row['last_queue'] : 0;
// ออกบัตรคิวใหม่
$new_queue = $last_queue + 1;
$conn->query("INSERT INTO queue (queue_number) VALUES ($new_queue)");
echo "<h2>คิวของคุณคือ: <strong>$new_queue</strong></h2>";
?>
📌 4. หน้าพนักงานเรียกคิว (call_queue.php
)
<?php
include 'db.php';
// ดึงคิวที่รออยู่
$result = $conn->query("SELECT * FROM queue WHERE status = 'waiting' ORDER BY id ASC LIMIT 1");
if ($result->num_rows > 0) {
$queue = $result->fetch_assoc();
$queue_id = $queue['id'];
$queue_number = $queue['queue_number'];
// อัปเดตสถานะคิว
$counter_number = rand(1, 5); // สมมติให้สุ่มเคาน์เตอร์ 1-5
$conn->query("UPDATE queue SET status = 'serving', counter_number = $counter_number WHERE id = $queue_id");
echo "<h2>เรียกคิวที่: <strong>$queue_number</strong></h2>";
echo "<h3>กรุณาไปที่เคาน์เตอร์ที่: <strong>$counter_number</strong></h3>";
// แจ้งเตือนเสียง
echo '<audio autoplay><source src="ding.mp3" type="audio/mpeg"></audio>';
} else {
echo "<h2>ไม่มีคิวที่รออยู่</h2>";
}
?>
📌 5. หน้าจอแสดงคิวที่กำลังให้บริการ (display_queue.php
)
<?php
include 'db.php';
$result = $conn->query("SELECT * FROM queue WHERE status = 'serving' ORDER BY id DESC LIMIT 5");
echo "<h2>คิวที่กำลังให้บริการ</h2>";
while ($queue = $result->fetch_assoc()) {
echo "<h3>คิวที่: <strong>{$queue['queue_number']}</strong> | เคาน์เตอร์: <strong>{$queue['counter_number']}</strong></h3>";
}
?>
📌 6. ปิดคิวที่ให้บริการเสร็จแล้ว (complete_queue.php
)
<?php
include 'db.php';
// หาคิวที่กำลังให้บริการ
$result = $conn->query("SELECT * FROM queue WHERE status = 'serving' ORDER BY id ASC LIMIT 1");
if ($result->num_rows > 0) {
$queue = $result->fetch_assoc();
$queue_id = $queue['id'];
// อัปเดตสถานะเป็นเสร็จสิ้น
$conn->query("UPDATE queue SET status = 'completed' WHERE id = $queue_id");
echo "<h2>ปิดคิวเรียบร้อยแล้ว</h2>";
} else {
echo "<h2>ไม่มีคิวที่กำลังให้บริการ</h2>";
}
?>
📌 7. อัปเดตสถานะแบบเรียลไทม์ (Auto Refresh)
ให้ใช้ meta refresh
หรือ JavaScript setInterval()
<meta http-equiv="refresh" content="5">
หรือใช้ JavaScript:
setInterval(function() {
location.reload();
}, 5000);
✅ สรุป
- ลูกค้า กดรับบัตรคิว
- พนักงาน เรียกคิว และอัปเดตสถานะ
- มี เสียงแจ้งเตือนเมื่อเรียกคิว
- ใช้งาน PHP + MySQL + AJAX เพื่อให้ระบบลื่นไหล