Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 108,380

HOME > PHP > PHP Forum > สอบถามเกี่ยวกับตารางสอนตารางการนัดหมาย จะแสดงช่วงเวลาแบบ 1 ชั่วโมง แต่ช่วงเวลาขึ้นมาจาก database หมดเลย



 

สอบถามเกี่ยวกับตารางสอนตารางการนัดหมาย จะแสดงช่วงเวลาแบบ 1 ชั่วโมง แต่ช่วงเวลาขึ้นมาจาก database หมดเลย

 



Topic : 122696



โพสกระทู้ ( 9 )
บทความ ( 0 )



สถานะออฟไลน์




อ้างอิงจากกระทู้นี้นะค่ะ
https://www.thaicreate.com/php/forum/110887.html

พอดีได้สร้างตารางสอนเหมือนกับกระทู้ข้างต้น แต่ไม่เก็บวันจันทร์-ศุกร์ คือจะเป็นตารางสำหรับ1 วัน สามารถสร้างขึ้นมาได้แล้ว
ดังนี้

แต่ติดตรงที่ว่าต้องการให้เวลาแสดงออกมาเป็น 09.00-10.00 10.00-11.00.....19.00-20.00

ส่วนนี้คือโค้ดที่ใช้ค่ะ
Code (PHP)
 <?php
require_once 'connect.php';
$selTbTime = "select * from time";
$qryTbTime = mysql_query($selTbTime)or die(mysql_error());
while($rstTbTime = mysql_fetch_assoc($qryTbTime))
{
	$timeArr[$rstTbTime['id_time']] = array( "start" => $rstTbTime['start_time'], "stop" => $rstTbTime['end_time']);
}



$sqlTb = "SELECT * FROM treatment where date='$_POST[date]'";
$qryTb = mysql_query($sqlTb)or die(mysql_error());
while($rstTb = mysql_fetch_assoc($qryTb))
{
	$timeTeach[$rstTb['date']][] = array( 'time' => $rstTb["start_time"]."-".$rstTb["end_time"], 'title' => $rstTb["HNid"]." ");
}

/* Head Column */
function createCol($arr){
	$row = "";
	foreach( $arr as $data )
	{
		$row .= '<td class="center" width="30%" bgcolor="#DDA0DD" >' . $data['start'] . '-' . $data['stop'] . '</td>';
	}
	return $row;
}

/* Key Positon */
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++;
    }
}


/* 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 = getCol2($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="90%" align="center" cellspacing="0" cellpadding="2" style="table-layout: fixed;">';
echo '<tr><th width="10%">เวลา</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>';
	
	
	$list = '<tr >';
	$list.= '<td class="no" height="50"></td>';
	$chkCol = 0;
 $col = 0;

 foreach( $timeArr as $timeA )
 { 
 $highlight = "";
 $colspan = "";
 if($chkCol < ($col-1) && $col != 0){
 $chkCol++;
 continue;
 }
 $title = "&nbsp;";
 $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>';
?>


นี่คือ database time ค่ะ
time

ส่วนนี่คือวันเวลานัดหมายค่ะ

treat


รบกวนช่วยดูให้หน่อยนะค่ะ ขอบคุณค่ะ



Tag : PHP









ประวัติการแก้ไข
2016-05-01 00:57:31
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2016-05-01 00:33:01 By : chaearng View : 878 Reply : 3
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

MySQL มัน Compare หาช่วงเวลาในระดับ ชม. ได้อยู่แล้วนะครับ แต่จะต้องแปลงให้เป็นแบบ Date Time ก่อนครับ

SQL MYSQL DATE_FORMAT


แปลงใหเ้ป็น Format เป็น YYYY-MM-DD H:i:s






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-04 08:56:46 By : mr.win
 


 

No. 2

Guest


จาก "แต่ติดตรงที่ว่าต้องการให้เวลาแสดงออกมาเป็น 09.00-10.00 10.00-11.00.....19.00-20.00" หมายถึง หัวตาราง หรือ เวลาข้างในในแต่ละคาบ อธิบายหน่อย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-04 10:10:25 By : Kin-Kee
 

 

No. 3



โพสกระทู้ ( 8,588 )
บทความ ( 2 )



สถานะออฟไลน์


ทดลองศึกษาแล้วประยุกต์เอาครับ (ยังไม่ได้ทดสอบ)
Code (PHP)
<?php
$sql="
select t.doctor_id, u.id_time, b.`date`
		, if( b.doctor_id is null, "", t.st) st
		, if( b.doctor_id is null, "", t.en) en
from(
		select u.doctor_id, t.start_time st, t.end_time en 
		from `time`, (
				select doctor_id, `date` from booking 
				where `date` > curdate() group by doctor_id,`date` 
		) as u
) as t left join `booking` b 
on b.doctor_id = t.doctor_id and b.start_time>t.st and b.end_time<=t.en
";

$rs=$db->query($sql) or die ($sql . "<br>" . $db->error );
$old_doctor_date = ""; $tr = ""; $tds="";
while($ro = $rs->fetch_assoc()){
	if($ro['doctor_id'].$ro['date']!=$old_doctor_date){
		if( $tds>"" ) $tr.="<tr>".$tds."</tr>\n";
		$tds="<td>$ro[doctor_id]</td><td>ro[date]</td>"; 
		$old_doctor_date=$ro['doctor_id'].$ro['date'];
	}
	$tds .= '<td>'.$ro['st'].'-'.$ro['en'].'</td>';
}
$div.="<tr>".$tds."</tr>\n";
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Chaidhanan TEST</title>
</head>
<body>
<table>
<?php echo $div;?>
</table>
</body>
</html>


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-04 11:15:21 By : Chaidhanan
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามเกี่ยวกับตารางสอนตารางการนัดหมาย จะแสดงช่วงเวลาแบบ 1 ชั่วโมง แต่ช่วงเวลาขึ้นมาจาก database หมดเลย
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม , รับทำบัญชี , โรงงานผลิตครีม , สำนักงานบัญชี , รับจดทะเบียนบริษัท , Pangpond , รถมือสอง

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2020 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่