บทความสอนเขียน PHP เบื้องต้น

PHP คืออะไร โครงสร้างภาษา PHP
PHP กับการกำหนดตัวแปร (Variable) PHP กับเงื่อนไขการตัดสินใจ (if..else)
ข้อมูลชนิดอาร์เรย์ (Array) PHP กับการทำซ้ำ (Loop)


การรับตัวแปรจากแบบฟอร์ม

การเชื่อมต่อฐานข้อมูล MySQL


15 พ.ค. 2556

สร้างตารางเรียน ตารางสอนด้วย PHP

ตัวอย่างการสร้างตารางเรียน ตารางสอน เป็นซอร์สโค๊ดที่ได้จากคำถามในฟอรั่ม PHP ของเว็บไซต์ thaicreate.com ที่ผมเคยตอบเอาไว้ครับ โดยการดึงค่าจากฐานข้อมูลมาเก็บไว้ที่อาร์เรย์ แล้ววนลูปแสดงค่าอาร์เรย์ออกมาเป็นตาราง โดยสามารถปรับแต่งค่าในอาร์เรย์เพื่อให้ตรงต่อความต้องการของแต่ละท่านได้ตามความต้องการครับ

รูปตัวอย่างการสร้างตารางเรียน ตารางสอนด้วย PHP


<?php

$timeArr = array( 
   0 => array( "start" => "08:30", "stop" => "09:20"), 
   1 => array( "start" => "09:20", "stop" => "10:10"), 
   2 => array( "start" => "10:15", "stop" => "11:05"), 
   3 => array( "start" => "11:05", "stop" => "11:55"), 
   4 => array( "start" => "11:55", "stop" => "12:45"), 
   5 => array( "start" => "12:45", "stop" => "13:35"), 
   6 => array( "start" => "13:35", "stop" => "14:30"), 
   7 => array( "start" => "14:30", "stop" => "15:20"), 
   8 => array( "start" => "15:20", "stop" => "16:10"), 
   9 => array( "start" => "16:10", "stop" => "17:00"), 
   10 => array( "start" => "17:00", "stop" => "17:50")
  );

//DATABASE to Array
//วนลูปฐานข้อมูล มาเก็บในรูปแบบ Array
$timeTeach = array(
 0 => array( 
   array('time' => '08:30-11:55', 'title' => '4312405 เทคโนโลยีสารสนเทศ และการสื่อสาร'), 
   array('time' => '13:35-15:20', 'title' => '4312605 ระบบฐานข้อมูล')
   ),
 1 => array(
   array('time' => '12:45-16:10', 'title' => '4312502 หัวข้อพิเศษเกี่ยวกับวิทยาการคอมพิวเตอร์')
   ),
 2 => array(),
 3 => array(),
 4 => array(),
 5 => array(),
 6 => array(),
 7 => array()
);
//End การจัดรูปแบบข้อมูล

/* Head Column */
function createCol($arr){
 $row = "";
 foreach( $arr as $data )
 {
  $row .= '<td>' . $data['start'] . '-' . $data['stop'] . '</td>';
 }
 return $row;
}

/* Key Positon */
function getCol($haystack, $keyNeedle)
{
    $i = 0;
    foreach($haystack as $arr)
    {
        if($arr['start'] == $keyNeedle)
        {
            return $i;
        }
        $i++;
    }
}

/* Time Range */
function getTimeRange($timeT, $timeCol){
 $data = array();
 foreach($timeT as $timeA){
  $time = $timeA['time'];
  if(!$time) continue;
  $tm = explode("-", $time);
  //echo '
', print_r($tm,true) ,'
'; $start = getCol($timeCol, $tm[0]); $end = getCol($timeCol, $tm[1] ); $colspan = $end - $start; $data[$tm[0]] = array('colspan' => $colspan, 'title' => $timeA['title']); } return $data; } $list = ""; echo '<table border="1" width="90%" align="center" cellspacing="0">'; echo '<tr><td> </td><td> </td>'. createCol( $timeArr ) .'</tr>'; foreach($timeTeach as $i=>$arr){ //ค้นหาข้อมูลในตารางลงทะเบียน //นับช่วงเวลา start_time กับ stop_time ว่ามีกี่ช่อง $timeT = $timeTeach[$i]; $arrRange = getTimeRange($timeT, $timeArr); //echo '
', print_r($arrRange,true) ,'
'; $no = $i + 1; $list = '<tr>'; $list.= '<td rowspan="2" class="no">'.$no.'</td>'; $list.= '<td>ลายเซ็น</td>'; $chkCol = 0; $col = 0; foreach( $timeArr as $timeA ) { $highlight = ""; $colspan = ""; if($chkCol < ($col-1) && $col != 0){ $chkCol++; continue; } $col = 0; $chkCol = 0; if(!empty($arrRange[trim($timeA['start'])])){ $col = $arrRange[trim($timeA['start'])]['colspan']; $highlight = "highlight"; $colspan = 'colspan="'.$col.'"'; } $list.= '<td '.$colspan.' class="'. $highlight .'"> </td>'; } $list.= '</tr>'; $list.= '<tr>'; $list.= '<td>เอก/รุ่น/ห้อง</td>'; foreach( $timeArr as $timeA ) { $highlight = ""; $colspan = ""; if($chkCol < ($col-1) && $col != 0){ $chkCol++; continue; } $title = " "; $col = 0; $chkCol = 0; if(!empty($arrRange[trim($timeA['start'])])){ $col = $arrRange[trim($timeA['start'])]['colspan']; $title = $arrRange[trim($timeA['start'])]['title']; $highlight = "highlight"; $colspan = 'colspan="'.$col.'"'; } $list .= '<td '.$colspan.' class="'. $highlight .' title">' . $title . '</td>'; } $list .= '</tr>'; echo $list; } echo '</table>'; ?>


ที่มา : http://www.thaicreate.com/php/forum/094496.html


บทความที่เกี่ยวข้อง