จากบทความเดิมที่เป็นตัวอย่างการสร้างปฏิทิน PHP ในมุมมองแบบรายเดือน และปฏิทิน PHP ในมุมมองแบบรายสัปดาห์ จะเป็นแค่เพียงตัวอย่างการเขียนโปรแกรม PHP เพื่อสร้างปฏิทินเปล่าๆ และแบบแสดงข้อมูลกิจกรรมเท่านั้น ในบทความนี้จะมานำเสนอการตรวจสอบเงื่อนไขการจอง เพื่อแสดงเป็นสีพื้นหลังให้ทราบสถานะการจองในแต่ละวันกันครับ
กำหนดให้ในแต่ละวัน ลูกค้าสามารถจองคิวได้เพียง 3 รายเท่านั้น
หากวันใดที่ไม่มีรายการจองให้แสดงพื้นหลังเป็นสีเขียว
หากจองแล้วแสดงพื้นหลังเป็นสีเหลือง
หากจองคิวครบแล้วให้แสดงเป็นสีแดง
ก่อนจะสร้างปฏิทินให้เรียกรายการจองของเดือนนั้นๆ มาเก็บไว้ในตัวแปรอาร์เรย์ก่อน เพื่อนำไปตรวจสอบในการวนลูปสร้างปฏิทิน
ตัวอย่างข้อมูลที่เก็บไว้ในตัวแปรอาร์เรย์ $bookArr
จะได้จำนวนการจองในแต่ละวันของเดือนนั้นๆ เช่น
$bookArr[1] = 1
$bookArr[5] = 3
ซึ่งฟิลด์ bk_date ที่เก็บวันที่จองนั้นจะต้องกำหนด Type เป็นแบบ date ข้อมูลที่บันทึกจะอยู่ในรูปแบบ yyyy-mm-dd จึงจะสามารถใช้กับฟังก์ชั่น DAY() และ DATE_FORMAT() ของ MySQL ได้
หลังจากที่ได้ตัวแปรอาร์เรย์ $bookArr ที่เก็บจำนวนการจองในแต่ละวันของเดือนที่ต้องการไว้แล้ว ต่อไปก็เป็นในส่วนของการวนลูปสร้างตารางปฏิทิน PHP
เพียงเท่านี้ก็จะได้สีพื้นหลังที่แสดงสถานะที่ต่างกันของแต่ละวันได้แล้วครับ
ปล. ตัวอย่างโครงสร้างตารางการจองที่ใช้กับบทความนี้
ในส่วนของตารางการจองนี้จะเป็นแบบบันทึกเป็นรายการต่อคนไปนะครับ การที่เราจะนับว่าวันไหนมีคนจองเท่าไหร่ก็ใช้การนับที่จัดกลุ่มตามวันได้เลยครับ
ผลลัพธ์ที่ได้
กำหนดให้ในแต่ละวัน ลูกค้าสามารถจองคิวได้เพียง 3 รายเท่านั้น
$bookPerDay = 3;
หากวันใดที่ไม่มีรายการจองให้แสดงพื้นหลังเป็นสีเขียว
หากจองแล้วแสดงพื้นหลังเป็นสีเหลือง
หากจองคิวครบแล้วให้แสดงเป็นสีแดง
<style type="text/css">
.book_status1{ background-color : green;}
.book_status2{ background-color : yellow;}
.book_status3{ background-color : red;}
</style>
ก่อนจะสร้างปฏิทินให้เรียกรายการจองของเดือนนั้นๆ มาเก็บไว้ในตัวแปรอาร์เรย์ก่อน เพื่อนำไปตรวจสอบในการวนลูปสร้างปฏิทิน
$month = isset($_POST['month']) ? $_POST['month'] : date('m');
$year = isset($_POST['year']) ? $_POST['year'] : date('Y');
$bookArr = array();
$yearMonth = "$year-$month";
$sql = "SELECT DAY( `bk_date` ) AS book_day, COUNT( * ) AS qty
FROM `tb_report_booking`
WHERE DATE_FORMAT( `bk_date` , '%Y-%m' ) = '$yearMonth'
GROUP BY DAY( bk_date )";
$qry = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_assoc($qry)){
$bookArr[$row['book_day']] = $row['qty'];
}
ตัวอย่างข้อมูลที่เก็บไว้ในตัวแปรอาร์เรย์ $bookArr
จะได้จำนวนการจองในแต่ละวันของเดือนนั้นๆ เช่น
$bookArr[1] = 1
$bookArr[5] = 3
ซึ่งฟิลด์ bk_date ที่เก็บวันที่จองนั้นจะต้องกำหนด Type เป็นแบบ date ข้อมูลที่บันทึกจะอยู่ในรูปแบบ yyyy-mm-dd จึงจะสามารถใช้กับฟังก์ชั่น DAY() และ DATE_FORMAT() ของ MySQL ได้
หลังจากที่ได้ตัวแปรอาร์เรย์ $bookArr ที่เก็บจำนวนการจองในแต่ละวันของเดือนที่ต้องการไว้แล้ว ต่อไปก็เป็นในส่วนของการวนลูปสร้างตารางปฏิทิน PHP
for($i=1; $i <= $lastDay; $i++){ //วนลูป ตั้งแต่วันที่ 1 ถึงวันสุดท้ายของเดือน
/*
.....
..... โค๊ดในส่วนอื่นๆ
.....
*/
//ระบายสี
$numBook = isset($bookArr[$i]) ? $bookArr[$i] : 0;
$tdStyle = "";
if($numBook >= 3){
$tdStyle = "book_status3";
}elseif($numBook > 0){
$tdStyle = "book_status2";
}else{
$tdStyle = "book_status1";
}
echo "<td class='$tdStyle'> $i </td>"; //สร้างคอลัมน์ แสดงวันที่
/*
.....
..... โค๊ดในส่วนอื่นๆ
.....
*/
}
เพียงเท่านี้ก็จะได้สีพื้นหลังที่แสดงสถานะที่ต่างกันของแต่ละวันได้แล้วครับ
ปล. ตัวอย่างโครงสร้างตารางการจองที่ใช้กับบทความนี้
ในส่วนของตารางการจองนี้จะเป็นแบบบันทึกเป็นรายการต่อคนไปนะครับ การที่เราจะนับว่าวันไหนมีคนจองเท่าไหร่ก็ใช้การนับที่จัดกลุ่มตามวันได้เลยครับ
ผลลัพธ์ที่ได้
บทความที่เกี่ยวข้อง
- PHP Calendar : ฝีกสร้างปฏิทินไว้ใช้ในงานต่างๆ
- PHP Calendar : สร้างปฏิทินมุมมองแบบสัปดาห์
- สร้างปฏิทิน รายงานยอดที่พนักงานทำได้ในแต่ละเดือนแบบง่ายๆ
- สร้างตารางเรียน ตารางสอนด้วย PHP
"PHP ไม่ได้สร้างสุดยอดโปรแกรมแต่ PHP ช่วยให้งานคุณง่ายขึ้นต่างหาก"
PHP CI MANIA - PHP Code Generatorโปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม
สนใจสั่งซื้อเพียง 3,990 บาท
PHP CI MANIA - PHP Code Generator
โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"
รับเขียนงานจองคิวตามแบบมั้ยครับ
ตอบลบถ้ารับ ติดต่อ โจ 0816135593