ขอสอบถามเรื่อง สร้างตารางเวลา Schedule ด้วย PHP ครับ
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ขอสอบถามเรื่อง สร้างตารางเวลา Schedule ด้วย PHP ครับ
ขอสอบถามเรื่อง สร้างตารางเวลา Schedule ด้วย PHP ครับ
Copy
ผมไม่รุ้ตรงไหนผิด มันไม่ขึ้น กิจกรรมครับ
<!-- Content Wrapper. Contains page content --> <div class="content-wrapper"> <!-- Main content --> <section class="content"> <?php $thai_day_arr=array("จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์","อาทิตย์"); $thai_month_arr=array("","มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิการยน","ธันวมคม"); $thai_month_arr_short=array("","ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."); //////////////////////// ส่วนของการจัดการตารางเวลา ///////////////////// $sc_startTime=date("Y-m-d 08:00:00"); //กำหนดเวลาเริ่มต้น เปลี่ยนเฉพาะเลจเวลา $sc_endTime=date("Y-m-d 22:00:00"); //กำหนดเวลาสิ้นสุด เปลี่ยนเฉพาะเลจเวลา $sc_t_startTime=strtotime($sc_startTime); $sc_t_endTime=strtotime($sc_endTime); $sc_numStep="60"; //ช่วงช่องว่าง หน่วยน่าที 60นาที =1ชั่วโมง $sc_timeStep=7;//จำนวนวันที่จะโชว์ 1-7 $sc_timeStep=array(); $sc_numCol=0; ////////////////////// ส่วนของการจัดการตารางเวลา ///////////////////// // ส่วนของการกำหนดวัน สามารถนำไปประยุกต์กรณีทำตารางเวลาแบบ เลื่อนดูแต่ละสัปดาห์ได้ $now_day=date("Y-m-d");//วันที่ ปัจจุบัน ให้แสดงตารางที่มีวันปัจจุบัน เมื่อแสดงครั้งแรก if (isset($_GET['uts'])&& $_GETp['uts']!="") { //เมื่อมีการเปลี่ยน Week $now_day=date("Y-m-d",trim($_GETp['uts'])); //เปลี่ยนวันที่ แปลงจากค่าวันจันทร์ที่ส่งมา } // หาตัวบวก หรือลบ เพื่อหาวันที่ของวันจันทร์ในสัปดาห์ $startWeekDay_back=(date("w",strtotime($now_day))!=0)?-(date("w",strtotime($now_day))):-6; $start_weekDay=date("Y-m-d",strtotime("+$startWeekDay_back day")); //หาวันที่ของวันจันทร์ของสัปดาห์ if (isset($_GET['ust']) && $_GET['uts']!="") { //ถ้ามีค่าเปลี่ยน Week มา $start_weekDay=$now_day; //ให้ใช้วันแรก เป็นวันที่ส่งมา } // หาวันที่วันอาทิตย์ของ Week นั้น ๆ $end_weekDay=date("Y-m-d",strtotime($start_weekDay."+7 day")); $timestamp_prev=strtotime($start_weekDay."-7 day"); //ค่าวันจันทร์ของอาทิตย์ก่อนหน้า $timestamp_next=strtotime($start_weekDay."+7 day"); //ค่าวันจันทร์ของอาทิตย์ถัดไป while ($sc_t_startTime<=$sc_t_endTime) { $sc_timeStep[$sc_numCol]=date("H:i",$sc_t_startTime); $sc_t_startTime=$sc_t_startTime+($sc_numStep*60); $sc_numCol++; //ได้จำนวนคอมลัมน์ที่จะแสดง } ///////////////////// ส่วนของข้อมูล ที่ดึงจากฐานข้อมูล /////////////////// $data_schedule=array(); $strSQL = "SELECT * FROM tble_schedule WHERE course_date BETWEEN '".$start_weekDay."' AND '".$end_weekDay."' ORDER BY course_date"; $result=mysql_db_query ($objDB,$strSQL); if ($result) { while ($row=mysql_fetch_assoc($result)) { $data_schedule[$row['course_date']][]=array( "start_time"=>$row['course_start_time'], "end_time"=>$row['course_end_time'], "detail"=>$row['course_title'] ); } } ?> <div class="wrap_schedule"> <button type="" class="btn btn-md btn-info" onclick="window.location='pt_main.php?uts=<?php echo $timestamp_prev;?>'"> Prev</button> <button type="" class="btn btn-md btn-info" onclick="window.location='pt_main.php?uts=<?php echo $timestamp_next;?>'"> Next</button> </div> <br> <div class="wrap_schedule"> <table cellpadding="2" cellspacing="2" class="table table-bordered table-striped"> <tr> <td align="center" valign="middle" height="50"></td> <?php for ($i_time=0; $i_time <$sc_numCol-1 ; $i_time++) { ?> <td align="center" valign="middle" height="50"> <div class="time_schedule_text"> <?php echo $sc_timeStep[$i_time];?> - <?php echo $sc_timeStep[$i_time+1];?> </div> </td> <?php }?> </tr> <?php //วน Loop แสดงจำนวนวันตามที่กำหนด for ($i_day=0; $i_day <$num_dayShow; $i_day++) { $dayInSchedule_chk=date("Y-m-d",strtotime($start_weekDay."+".$i_day."day")); $dayInSchedule_show=date("d-m-Y",strtotime($start_weekDay."+".$i_day."day")); ?> <tr> <td align="center" valign="middle" height="50" class="day_schedule"> <div class="day_schedule_text"> <?php echo $thai_day_arr[$i_day];?> <br> <?php echo $dayInSchedule_show;?> </div> </td> <?php //ตรวจสอบและกำหนดช่วงเวลาให้สอดคล้องกับข้อมูล if (isset($data_schedule[$dayInSchedule_chk])) { $num_data=count($data_schedule[$dayInSchedule_chk]); } else { $num_data=0; } $arr_checkSpan=array(); $arr_detailShow=array(); $real_sc_numCol=$sc_numCol; for ($i_time=0; $i_time <$sc_numCol-1 ; $i_time++) { if ($num_data>0) { $haveIN=0; $dataShow=""; foreach ($data_schedule[$dayInSchedule_chk] as $k => $v) { if (strtotime($dayInSchedule_chk." ".$sc_timeStep[$i_time].":00")==strtotime($dayInSchedule_chk." ".$v['start_time'])) { $haveIN++; $dataShow=$v['detail']; $add=1; while (strtotime($dayInSchedule_chk." ".$sc_timeStep[$i_time+$add].":00") < strtotime($dayInSchedule_chk." ".$v['end_time'])) { $haveIN++; $dataShow=$v['detail']; $add++; } } } $arr_checkSpan[$i_time]=$haveIN; $arr_detailShow[$i_time]=$dataShow; } } for ($i_time=0; $i_time <$sc_numCol-1 ; $i_time++) { $colspan=""; $css_use=""; $dataShowIN=""; if (isset($arr_checkSpan[$i_time])) { if ($arr_checkSpan[$i_time]>0) { $dataShowIN=$arr_detailShow[$i_time]; $css_use="class="activity""; } if ($arr_checkSpan[$i_time]>1) { $colspan="colspan="".$arr_checkSpan[$i_time]."""; $step_add=$arr_checkSpan[$i_time]-1; $i_time+=$step_add; } } ?> <td <?php echo $css_use;?> <?php echo $colspan;?> align="center" valign="middle" height="50"> <?php echo $dataShowIN; ?> </td> <?php }?> </tr> <?php }?> </table> </div> </section><!-- /.content --> </div><!-- /.content-wrapper -->

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา
โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ