รูปแบบต่อไปนี้ใช้สำหรับกรณีการตรวจสอบข่วงเวลา ที่ว่างของวันหนึ่งๆ เท่านั้น
กรณีใช้ตรวจสอบช่วงเวลาข้ามวันต้องประยุกต์เพิ่มเติม
หลักการสู่เงื่อนไข คือ สมมติเรามีห้อง ที่ให้สำหรับจองเวลาเพื่อใช้งาน และเมื่อมีการจอง
ห้องดังกล่าวแล้ว เราทำการบันทึกข้อมูล คือ ช่วงเวลาเริ่มต้น และช่วงเวลาสิ้นสุด
*สามารถใช้สำหรับหลายห้องก็ได้ กรณีตัวอย่างสมมติแค่ห้องเดียว
รูปแบบโครงสร้างฐานข้อมูลเก็บการจองห้อง อย่างง่าย
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | -- -- 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' ); |
การจะตรวจสอบว่าวันนี้ ห้องว่างหรือไม่ เราต้องทำการส่งเวลาที่ต้องการตรวจสอบเข้าไป
ดูแนวทางการสมมติการส่งค่า และการใช้งาน
ตัวอย่างโค้ด คำอธิบายแสดงในโค้ด
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | <?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> |
สามารถประยุกต์เพิ่มเติม ได้ตามต้องการ