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

Registered : 109,037

HOME > PHP > PHP Forum > อยากถามเกี่ยวกับตารางการจองของสนามครับ มีแหล่งอ้างอิง



 

อยากถามเกี่ยวกับตารางการจองของสนามครับ มีแหล่งอ้างอิง

 



Topic : 111715



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



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




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

ผมได้แก้ไขในส่วนต่างแล้วแต่ว่าของผมมีเงื่อนไขเพื่มมาอย่างนึงคือ
1. ของด้านบนมีเป็นการเปรียบเทียบสองตาราง
2. ในส่วนของผมต้องการจะดึงเงื่อนไขในส่วนของคนจองแล้วมาแสดงแทนครับว่ามีใครจองเวลาไหนแล้ว ที่สนามไหน

ผมได้แก้ไขโค๊ดในกระทู้ข้างต้นเป็นดังนี้ครับ


Code (PHP)
include "system/connect.php";


$query = mysql_query("SELECT * FROM time");
	while($rs = mysql_fetch_assoc($query))
	{
		
		
	$timeArr[$rs['id_time']] = array( "start" => $rs['time_start'], "stop" => $rs['time_stop']);
}

//DATABASE to Array
//วนลูปฐานข้อมูล มาเก็บในรูปแบบ Array

$query1 = mysql_query("SELECT * FROM stadium");
	while($rs1 = mysql_fetch_assoc($query1)){
	$timeTeach[$rs1['id_stadium']][] = array( "time" => '10:00-11:00', "title" => $rs1['name_stadium']);
}	
//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 '<pre>', print_r($tm,true) ,'</pre>';
		$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>&nbsp;</td>'. createCol( $timeArr ) .'</tr>';
foreach($timeTeach as $i=>$arr){

	//ค้นหาข้อมูลในตารางลงทะเบียน
	//นับช่วงเวลา start_time กับ stop_time ว่ามีกี่ช่อง
	$timeT = $timeTeach[$i];
	
	$arrRange = getTimeRange($timeT, $timeArr);
	
	//echo '<pre>', print_r($arrRange,true) ,'</pre>';
	
	$no = $i;

	$list = '<tr>';
	$list.= '<td rowspan="2" class="no">สนาม'.$no.'</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.= '</tr>';
	
	$list.= '<tr>';
	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>';

?>



ก็จะได้ตามภาพเป็นแบบนี้
ตาราง

ส่วนฐานข้อมูลขอผมตอนนี้ที่ดึงมาแล้ว 2 ตารางคือเวลากับสนามครับ
ตารางสนาม
ตารางเวลา


ที่นี้เงื่อนไขที่เพิ่มของผมเป็นตารางการเช่าครับ
ตารางการเช่า


จะสร้างเงื่อนไขเพิ่มยังไงดีครับให้แสดงไฮไลท์เฉพาะในส่วนของช่วงที่มีคนเช่าแล้ว

ปล. โค๊ดที่ผมแก้ไข ผมลองเพิ่มเติมเองนะครับมันเลยออกมาเป็นแบบภาพแรกที่เห็น



Tag : PHP, MySQL, HTML/CSS









ประวัติการแก้ไข
2014-10-03 18:16:08
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-10-03 18:14:44 By : teamerze View : 1134 Reply : 8
 

 

No. 1



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



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


ช่วยหน่อยครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-03 20:38:18 By : teamerze
 


 

No. 2



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



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


ใช้งานจริงหรือเปล่าครับ หรือโปรเจคถ้าใช้งานจริงแนะนำ MRBS เลย สะดวก คอนฟิกนิดๆหน่อยใช้งานได้แล้ว

ถ้าเป็นโปรเจคก็ ผมว่ายุบตาราง time ใส่ใว้ในตาราง rent เลยครับ แล้วดึง rent ใส่เงื่อไข rent_date เข้าไป ณ ช่วงเวลาที่ต้องการ
เช่น select count(id) as num from rent where rent_date=date() and rent_time= อะไรก็ว่าไป
ถ้าเกิดมันมีค่าก็ให้มันเปลี่ยนสีพื้นหลัง ครับ ประมาณนี้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-04 10:50:32 By : tam78910
 

 

No. 3



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



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


อ่อ เป็นโปรเจ็คครับ เด๊่ยวจะลองหาวิธีดูครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-04 11:11:39 By : teamerze
 


 

No. 4



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



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


เออ ผมว่า จริงๆ แล้ว code มันน่า จะ ง่าย กว่านี้ นะ
ก่อนอื่นต้อง ทำ base ให้ถูกก่อน นะ table rent
1 เก็บ เวลา array $time[$id_time] = array( "time" => $rs['time_start'].'-'.$rs['time_stop']);
2 เก็บ สนาม array $std[$id_std] = array(detail);
3 เก็บ คนจอง array $rent[$id_std][$id_time] = array(detail);
(ตอนเก็น rent ต้อง export() id_time ออกมาอีกทีนะเพราะ base มันเก็บ 1,2 ใช่ป่าว)
$rent_time = export(',',$result['id_time'])
เช่น
Code (PHP)
foreach( $rent_time as $rent_time2 ){
$rent[$id_std][$rent_time2 ] = array('mem' => '22');
}

พอได้ 3 อันนี้ ละ
ก็
Code (PHP)
foreach($std as $std_=>$std_2){
echo '<td>'.$std_2['name'].'</td>';
 foreach($time as $time_=>$time_2){
   if(empty($rent[$std_][$time_]['mem']))
     echo '<td></td>'
   else
     echo '<td>'.$rent[$std_][$time_]['mem'].'</td>'
 }

}

ผมว่าน่าจะได้แล้ว นะ ส่วนอยากให้หน้าตาออกมายังไง ต้องเอาไปปรับเองละครับ


ประวัติการแก้ไข
2014-10-04 12:13:11
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-04 12:10:21 By : gaowteen
 


 

No. 5



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



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


ใกล้ละครับ แต่มีข้อมูลการเช่ามาแต่มันดันขึ้น ... (แสดงว่าไม่มี ใช่ไหมครับ)

Code (PHP)
    <table>
    <?
	
	include "system/connect.php";
	echo "<tr>";
	$query2 = mysql_query("SELECT * FROM time ORDER BY  `time`.`time_start` ASC ");
	while($rs2 = mysql_fetch_assoc($query2)){
	$time[$rs2['id_time']] = array( "start" => $rs2['time_start'], "stop" => $rs2['time_stop']);
	}

	$room = array();
$query = mysql_query("SELECT *
            FROM stadium ");
	while($rs = mysql_fetch_assoc($query)){
	$std[] = array( "id" => $rs['id_stadium'] , "name" => $rs['name_stadium']);
}	

	$booking = array(); 
	$query1 = mysql_query("SELECT * FROM rent");
	while($rs1 = mysql_fetch_assoc($query1)){
	$booking[$rs1['id_stadium']][$rs1['time_start']] = array('start_time' => $rs1['time_start'] , 'end_time' => $rs1['time_stop'] , 'title' => $rs1['id_member'] );

}	


foreach($std as $std_=>$std_2){
echo '<td>'.$std_2['name'].'</td>';
 foreach($time as $time_=>$time_2){
   if(empty($booking[$std_]['start_time']['mem']))
     echo '<td>..</td>';
   else
     echo '<td>'.$booking[$std_][$time_]['time_start'].'</td>';
 }
}
?>
</table>


ผมแก้ไขตารางการเช่าแล้วให้เก็บค่า เริ่มต้นกับสิ้นสุดแทนเก็บ Id_time ละนะครับ


ประวัติการแก้ไข
2014-10-04 14:52:32
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-04 14:51:27 By : teamerze
 


 

No. 6



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



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


ไม่ใช่ครับ เก็บ เหมือนเดิม ถุกแล้ว แค่แก้ id_time ให้ตรงกับ table time
ประมาน นี้
Code (PHP)
<table>
  <?
	
	include "system/connect.php";
	echo "<tr>";
	$query2 = mysql_query("SELECT * FROM time ORDER BY  `time`.`time_start` ASC ");
	while($rs2 = mysql_fetch_assoc($query2)){
	$time[$rs2['id_time']] = array( "time" => $rs2['time_start'].'-'.$rs2['time_stop']);
	}

	$room = array();
$query = mysql_query("SELECT *
            FROM stadium ");
	while($rs = mysql_fetch_assoc($query)){
	$std[$rs['id_stadium']] = array( "id" => $rs['id_stadium'] , "name" => $rs['name_stadium']);
}	

	$booking = array(); 
	$query1 = mysql_query("SELECT * FROM rent");
	while($rs1 = mysql_fetch_assoc($query1)){
		$rent_time = explode(',',$rs1['id_time']);
		foreach($rent_time as $rent_timeVal ){
			$booking[$rs1['id_stadium']][$rent_timeVal] = array('start_time' => $rs1['time_start'] , 'end_time' => $rs1['time_stop'] , 'title' => $rs1['id_member'] );
		}
}	


foreach($std as $std_=>$std_2){
echo '<td>'.$std_2['name'].'</td>';
 foreach($time as $time_=>$time_2){
   if(empty($booking[$std_][$time_]['title']))
     echo '<td>..</td>';
   else
     echo '<td>'.$booking[$std_][$time_]['time_start'].'</td>';
 }
}
?>
</table>



ประวัติการแก้ไข
2014-10-04 16:06:23
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-04 15:47:54 By : gaowteen
 


 

No. 7



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



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


อ่อ โอเคครับ ตอนนี้เหมือนเห็นรูปร่างละเด๊่ยวจะลอง ตกแต่งดูครับ ได้ไม่ได้ผมจะมาลองถามอีกทีนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-04 17:36:46 By : teamerze
 


 

No. 8



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



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


ได้ละครับ ขอบคุณมากครับที่ช่วยแนะนำ

Code (PHP)
			$stadium = array();
			$query = mysql_query("SELECT * FROM stadium ");
			while($rs = mysql_fetch_assoc($query)){
			$std[$rs['id_stadium']] = array( "id" => $rs['id_stadium'] , "name" => $rs['name_stadium']);
			}
			$query2 = mysql_query("SELECT * FROM time ORDER BY  `time`.`time_start` ASC ");
			while($rs2 = mysql_fetch_assoc($query2)){
			$time[$rs2['id_time']] = array( "time" => $rs2['time_start'].'-'.$rs2['time_stop']);
			}	
			$booking = array(); 
			$query1 = mysql_query("SELECT * FROM rent");
			while($rs1 = mysql_fetch_assoc($query1)){
				$rent_time = explode(',',$rs1['id_time']);
				foreach($rent_time as $rent_timeVal ){
				$booking[$rs1['id_stadium']][$rent_timeVal] = array('id' => $rs1['id_member'] ,'title' => $rs1['id_member'] );
				}
			}	
			
			echo '<table border="1">';
			foreach($std as $std_=>$std_2){
				echo '';
				echo '<tr><td></td><td align="center"><b>'.$std_2['name'].'</b></td><td  align="center"><b> ชื่อผู้จอง</b></td>';
				
					foreach($time as $time_=>$time_2){
						echo '<tr>';
						echo '<td  align="center"><b>เวลา</b></td><td align="center">'.$time_2['time'].'</td>';
				
					if(empty($booking[$std_][$time_]['title']))
     				echo '<td align="center"><p style="color:green"><b> ว่าง </b></p></td>';
   					else
     				echo '<td align="center"><p style="color:red"><b>'.$booking[$std_][$time_]['id'].'</b></p></td>';
				
				
				}
				echo '</tr>';
			}


ดก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-10-04 19:18:39 By : teamerze
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : อยากถามเกี่ยวกับตารางการจองของสนามครับ มีแหล่งอ้างอิง
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

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