fb_ads
www.รับเขียนโปรแกรม.net รับเขียนโปรแกรม ระบบต่างๆ เช่น ระบบข้อมูลบุคคล ระบบข้อมูลลูกค้า ระบบซื้อขาย คลังสินค้า ระบบเช่าจอง ทำงานบน Website ด้วย PHP MySql NodeJs HTML5 JavaScript Ajax
เทคนิคการเขียนคำสั่ง sql ป้องกันเวลาทับซ้อนในระบบจอง
สำหรับระบบการจองนั้น จำเป็นอย่างยิ่งที่จะต้องมีการตรวจสอบไม่ให้การจองมีการทับซ้อนกับเวลาที่มีการจองไว้แล้วในต่อไปนี้นี้คือคำสั่ง sql ตรวจสอบว่าการจองต้องไม่ทับซ้อนกัน
//กำหนดให้ เวลาที่ต้องการจอง อยู่เริ่มจากเวลาจริง $min นาที และเลิกก่อนเวลาจริง $min นาที
//เพราะผู้ใช้จะได้สามารถจองในเวลาถัดไปได้เลย โดยที่ไม่ทับกับการจองก่อนหน้า
$start_time=date('Y-m-d H:i:s', strtotime(' +'.$min.' minutes', strtotime($_POST["start_time"]) ));
$end_time=date('Y-m-d H:i:s', strtotime(' -'.$min.' minutes', strtotime($_POST["end_time"]) ));
//ตัวอย่างคำสั่ง sql สำหรับตรวจสอบการจอง
$sql="SELECT * FROM reservation
WHERE(
( (start_time>='".$start_time."')AND(end_time<='".$end_time."') )OR
( (start_time<='".$start_time."')AND(end_time>='".$end_time."') )OR
( (start_time BETWEEN '".$start_time."' AND '".$end_time."') )OR
( (end_time BETWEEN '".$start_time."' AND '".$end_time."') )
)";
//เวลาที่จองใหม่ต้องไม่คล่อมเวลาที่จองเดิม
(start_time>='".$start_time."')AND(end_time<='".$end_time."')
//เวลาที่จองใหม่ต้องไม่อยู่ในเวลาที่จองเดิม
(start_time<='".$start_time."')AND(end_time>='".$end_time."')
//เวลาที่จองใหม่ต้องไม่ทับซ้อนเวลาที่จองเดิม
( (start_time BETWEEN '".$start_time."' AND '".$end_time."') )OR
( (end_time BETWEEN '".$start_time."' AND '".$end_time."') )
ถ้ารันคำสั่งตามเงื่อนไขแล้วมีผลลัพธ์มากกว่าหนึ่งแถวแสดงว่าการจองมีการทับซ้อน