|
|
|
จากตัวอย่างการทำตารางเรียน นี้อ่ะครับ ผมต้องการดึงข้อมูลจาก Database ครับ |
|
|
|
|
|
|
|
โค้ดทั้งหมดที่แสดงตารางนะครับ
Code (PHP)
<?php
include("../db_conn.inc.php");
$selTbTime = "select * from tb_study_time;";
$qryTbTime = mysql_query($selTbTime)or die(mysql_error());
while($rstTbTime = mysql_fetch_assoc($qryTbTime))
{
$timeArr[$rstTbTime['TimeID']] = array( "start" => $rstTbTime['start_time'], "stop" => $rstTbTime['end_time']);
}
//DATABASE to Array
$selLast = "select TermFull from test_table where ClassID = '".$result["ClassID"]."';";
$qryLast = mysql_query($selLast)or die(mysql_error());
$rstLast = mysql_fetch_assoc($qryLast);//last termfull
$sqlTb = "select * from test_table where ClassID = '".$result["ClassID"]."' and TermFull = '".$rstLast["TermFull"]."' order by DayID asc,TimeIn asc;";
$qryTb = mysql_query($sqlTb)or die(mysql_error());
while($rstTb = mysql_fetch_assoc($qryTb))
{
$timeTeach[$rstTb['DayID']][] = array( 'time' => $rstTb["TimeIn"]."-".$rstTb["TimeEnd"], 'title' => $rstTb["SubjectID"]." ".$rstTb["SubjectName"]);
}
/* Head Column */
function createCol($arr){
$row = "";
foreach( $arr as $data )
{
$row .= '<td align="center">' . $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 '<pre>', print_r($tm,true) ,'</pre>';
$start = getCol($timeCol, $tm[0]);
$end = getCol($timeCol, $tm[1] );
//echo '<pre>', $start,' '.$tm[0].' '.$end.' '.$tm[1] ,'</pre>';
$colspan = $end - $start;
$data[$tm[0]] = array('colspan' => $colspan, 'title' => $timeA['title']);
}
return $data;
}
$list = "";
echo '<table border="1" width="100%" align="center" cellspacing="0" cellpadding="2" style="table-layout: fixed;">';
echo '<tr><th>วัน/เวลา</th>'. createCol( $timeArr ) .'</tr>';
foreach($timeTeach as $i=>$arr){
//ค้นหาข้อมูลในตารางลงทะเบียน
//นับช่วงเวลา start_time กับ stop_time ว่ามีกี่ช่อง
$timeT = $timeTeach[$i];
//echo '<p>'.print_r($timeT).'</p>';
$arrRange = getTimeRange($timeT, $timeArr);
//echo '<pre>', print_r($arrRange,true) ,'</pre>';
$no = $i + 1;
if($no==2)
{
$day = "จันทร์";
}else if($no==3)
{
$day = "อังคาร";
}
else if($no==4)
{
$day = "พุธ";
}
else if($no==5)
{
$day = "พฤหัส";
}
else if($no==6)
{
$day = "ศุกร์";
}
else if($no==7)
{
$day = "เสาร์";
}
else if($no==8)
{
$day = "อาทิตย์";
}
$list = '<tr >';
$list.= '<td class="no">'.$day.'</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>';
?>
ซึ่ง เมื่อผมลองเช็คค่า $arrRange = getTimeRange($timeT, $timeArr); ดูมันได้ค่าตามนี้อ่ะครับ ค่าที่เป็น 0 หรือ ติดลบ การช่องที่ผิด ส่วนค่าที่เป็น ค่า + คือ 3 แสดงผลถูกต้องครับ ดังรูป
|
|
|
|
|
Date :
2014-08-26 15:48:29 |
By :
angelkiller9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ข่วยหน่อยนะฮ๊าฟฟ ผมทำไม่ได้จริงๆ :'(
|
|
|
|
|
Date :
2014-08-26 19:22:23 |
By :
angelkiller9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้ละครับ เรียกใช้ 2 ฟังชั้น
Code
function getCol($haystack, $keyNeedle)
{
$i = 0;
//echo '<pre>', print_r($haystack,true) ,'</pre>';
foreach($haystack as $arr)
{
if($arr['start'] == $keyNeedle)
{
//echo '<pre>', print_r($arr,true) ,'</pre>';
return $i;
}
$i++;
}
}
function getCol2($haystack, $keyNeedle)
{
$i = 1;
//echo '<pre>', print_r($haystack,true) ,'</pre>';
foreach($haystack as $arr)
{
if($arr['stop'] == $keyNeedle)
{
//echo '<pre>', print_r($arr,true) ,'</pre>';
return $i;
}
$i++;
}
}
function getTimeRange($timeT, $timeCol){
...
$start = getCol($timeCol, $tm[0]);
$end = getCol2($timeCol, $tm[1] );
$colspan = $end - $start;
...
}
|
|
|
|
|
Date :
2014-08-26 20:47:09 |
By :
angelkiller9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณสำหรับทุกความคิดเห็น นั่งงม จนได้ ครับ
|
|
|
|
|
Date :
2014-08-26 20:51:55 |
By :
angelkiller9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|