:check_in WHERE u.status = 'active'"; if ($seaViewOnly) { $sql .= " AND u.is_sea_view = 1"; } $sql .= " ORDER BY LEFT(u.unit_name,1), CAST(SUBSTRING(u.unit_name,2) AS UNSIGNED)"; $stmt = $pdo->prepare($sql); $stmt->execute([':check_in' => $checkIn, ':check_out' => $checkOut]); $rows = $stmt->fetchAll(); // กันซ้ำ: หลังหนึ่งควรมีแค่แถวเดียว (booking ที่ทับซ้อนช่วงวันที่ ถ้ามีจะมีได้แค่ 1 รายการอยู่แล้วเพราะกันชนกันตอนจอง) $units = []; foreach ($rows as $r) { if (!isset($units[$r['id']]) || $r['booking_id']) { $units[$r['id']] = $r; } } $units = array_values($units); $availableCount = 0; foreach ($units as $u) { if (!$u['booking_id']) $availableCount++; } require __DIR__ . '/includes/header.php'; ?>

ปฏิทิน / ห้องว่าง

>
ช่วงวันที่ ถึง — ว่าง จากทั้งหมด หลัง
ว่าง   ว่าง (Sea View)   รอชำระ   มัดจำแล้ว   จ่ายเต็มแล้ว   ใช้ Voucher