ขอสอบถามเรื่อง สร้างตารางเวลา Schedule ด้วย PHP ครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ขอสอบถามเรื่อง สร้างตารางเวลา Schedule ด้วย PHP ครับ

ขอสอบถามเรื่อง สร้างตารางเวลา Schedule ด้วย PHP ครับ
ผมไม่รุ้ตรงไหนผิด มันไม่ขึ้น กิจกรรมครับ

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
<!-- 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 -->



1
 


ิbondsanti 29-06-2018 16:04:05

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1



ิbondsanti 29-06-2018 16:05






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