PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

แนวทางเช็คห้องว่าง ด้วย php และ mysql กับช่วงเวลาต่อวัน

01 April 2015 By


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

-- 
-- 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>
 
สามารถประยุกต์เพิ่มเติม ได้ตามต้องการ

Tags:: ช่วงเวลา ห้องว่าง

เนื้อหาพิเศษ เฉพาะสำหรับสมาชิก

กรุณาล็อกอิน และลงชื่อติดตาม


สมัครสมาชิกได้ที่        ล็อกอินได้ที่   





URL สำหรับอ้างอิง