🚀 ระบบจัดการคิวและเรียกคิวของธนาคาร (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 เพื่อให้ระบบลื่นไหล

,


ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *