รูปแบบต่อไปนี้ใช้สำหรับกรณีการตรวจสอบข่วงเวลา ที่ว่างของวันหนึ่งๆ เท่านั้น
กรณีใช้ตรวจสอบช่วงเวลาข้ามวันต้องประยุกต์เพิ่มเติม
หลักการสู่เงื่อนไข คือ สมมติเรามีห้อง ที่ให้สำหรับจองเวลาเพื่อใช้งาน และเมื่อมีการจอง
ห้องดังกล่าวแล้ว เราทำการบันทึกข้อมูล คือ ช่วงเวลาเริ่มต้น และช่วงเวลาสิ้นสุด
*สามารถใช้สำหรับหลายห้องก็ได้ กรณีตัวอย่างสมมติแค่ห้องเดียว
รูปแบบโครงสร้างฐานข้อมูลเก็บการจองห้อง อย่างง่าย
-- -- 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>
สามารถประยุกต์เพิ่มเติม ได้ตามต้องการ