รูปแบบต่อไปนี้ใช้สำหรับกรณีการตรวจสอบข่วงเวลา ที่ว่างของวันหนึ่งๆ เท่านั้น
กรณีใช้ตรวจสอบช่วงเวลาข้ามวันต้องประยุกต์เพิ่มเติม
หลักการสู่เงื่อนไข คือ สมมติเรามีห้อง ที่ให้สำหรับจองเวลาเพื่อใช้งาน และเมื่อมีการจอง
ห้องดังกล่าวแล้ว เราทำการบันทึกข้อมูล คือ ช่วงเวลาเริ่มต้น และช่วงเวลาสิ้นสุด
*สามารถใช้สำหรับหลายห้องก็ได้ กรณีตัวอย่างสมมติแค่ห้องเดียว
รูปแบบโครงสร้างฐานข้อมูลเก็บการจองห้อง อย่างง่าย
-- -- Table structure for table `tbl_room_reserve` -- CREATE TABLE `tbl_room_reserve` ( `reserve_id` int(11) NOT NULL auto_increment, `reserve_start` datetime NOT NULL, `reserve_end` datetime NOT NULL, PRIMARY KEY (`reserve_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; -- -- Dumping data for table `tbl_room_reserve` -- INSERT INTO `tbl_room_reserve` VALUES (1, '2015-04-01 08:15:00', '2015-04-01 10:15:00'); INSERT INTO `tbl_room_reserve` VALUES (2, '2015-04-01 14:02:04', '2015-04-01 15:02:13'); INSERT INTO `tbl_room_reserve` VALUES (3, '2015-03-31 14:59:29', '2015-04-01 16:59:42');
การจะตรวจสอบว่าวันนี้ ห้องว่างหรือไม่ เราต้องทำการส่งเวลาที่ต้องการตรวจสอบเข้าไป
ดูแนวทางการสมมติการส่งค่า และการใช้งาน
ตัวอย่างโค้ด คำอธิบายแสดงในโค้ด
<?php
header("Content-type:text/html; charset=UTF-8");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// เชื่อมต่อกับฐานข้อมูล
$link=mysql_connect("localhost","root","test"); // เชื่อมต่อ Server
mysql_select_db("test"); // ติดต่อฐานข้อมูล
mysql_query("set character set utf8"); // กำหนดค่า character set ที่จะใช้แสดงผล
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<br>
<br>
<br>
<div style="width:800px;margin:auto;">
<?php
// ตัวอย่างชุดข้อมูล
// 2015-04-01 08:15:00 2015-04-01 10:15:00
// 2015-04-01 14:02:04 2015-04-01 15:02:13
$chk_startDateTime="2015-04-01 15:02:00"; // ค่าวันที่ เวลาเริ่ม ที่ต้องการเช็ค
$chk_endDateTime="2015-04-01 17:14:00"; // ค่าวันที่ เวลาสิ้นสุด ที่ต้องการเช็ค
$nowday=substr($chk_startDateTime,0,10); // ดึงค่าเก็บวันที่ปัจจุบันไว้ใช้งาน
// ตรวจสอบว่าวันนี้มีรายการจองทั้งหมดกี่รายการ
$numInDay=@mysql_result(@mysql_query("
SELECT COUNT(reserve_id) FROM tbl_room_reserve
WHERE reserve_start LIKE '".$nowday."%'
"),0,0);
// ชุดคำสั่ง sql ตรวจสอบ รายการจอง ที่ไม่ทับซ้อนกับเวลาที่ตรวจสอบ
$q="
SELECT * FROM tbl_room_reserve WHERE 1
AND (
(
reserve_start>'".$chk_startDateTime."'
AND reserve_start>'".$chk_endDateTime."'
AND reserve_end>'".$chk_startDateTime."'
)
OR
(
reserve_end<'".$chk_startDateTime."'
AND reserve_end<'".$chk_endDateTime."'
AND reserve_start<'".$chk_endDateTime."'
)
)
";
$qr=mysql_query($q);
// จำนวนรายการจองที่ไม่ทับซ้อนกับเวลาที่ตรวจอบ
$numMatch=mysql_num_rows($qr);
// ถ้าจำนวนรายการจองที่ไม่ทับซ้อนกับเวลาที่ตรวจสอบ เท่ากับรายการจองทั้งหมด
// ซึ่งหมายถึง ช่วงเวลาที่ตรวจสอบ ว่าง
if($numMatch==$numInDay){
echo "ว่าง";
}else{
echo "ไม่ว่าง เลือกช่วงเวลาใหม่";
}
?>
</div>
</body>
</html>
สามารถประยุกต์เพิ่มเติม ได้ตามต้องการ