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 > จากตัวอย่างการทำตารางเรียน นี้อ่ะครับ ผมต้องการดึงข้อมูลจาก Database ครับ



 

จากตัวอย่างการทำตารางเรียน นี้อ่ะครับ ผมต้องการดึงข้อมูลจาก Database ครับ

 



Topic : 110887



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



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




จากตัวอย่างการทำตารางเรียน https://www.thaicreate.com/php/forum/094496.html#00337086 นี้อ่ะครับ ผมต้องการดึงข้อมูลจาก Database ครับ

โค้ดของผมคือ
Code (PHP)
include("../db_conn.inc.php");
$selTbTime = "select * from tb_study_time;"; //ข้อมูลเวลาเรียน ตั้งแต่ 08.30-18.40
$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
?>
<?php

$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"]);
}


ดังนี้ แต่ปัญหาติดอยู่ตรงตอนแสดงผลครับ บางวิชาแสดงผลตรง แต่บางวิชาไม่ตรงช่วงเวลาเรียนครับ
เช่น บางวิชาเรียน 3 ชั่วโมง แสดงผลแค่ 1 ชั่วโมง ประมาณนี้ ดังรูป

ตารางเวลา ใน Database
testtabletime

ตารางใน Database
study_table

ตารางที่แสดงผลเบนเว็บ
test_table_pic

จากตารางเรียนบนเว็บ รายวิชา 9000001 การสร้างเสริมสุขภาพแบบองค์รวม เมื่อดูเวลาเรียนใน ตารางDatabase จะเห็นว่า เรียนวันจันทร์เวลา 08.30-10.10 แต่ในที่นี้แสดงผลแค่ 08.30-09.20 ครับ
แต่ดูอีกรายวิชา 3422301 การตลาดโรงแรมและการขาย ในวันพุธ เวลา 08.30-11.05 ซึ่งแสดงผลได้ถูกต้อง เลยสับสน ว่าพลาดตรงไหนหรือเปล่าวครับ



Tag : PHP, MySQL









ประวัติการแก้ไข
2014-08-26 14:09:05
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-08-26 14:06:24 By : angelkiller9 View : 5172 Reply : 4
 

 

No. 1



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



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


โค้ดทั้งหมดที่แสดงตารางนะครับ

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 = "&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>';
?>


ซึ่ง เมื่อผมลองเช็คค่า $arrRange = getTimeRange($timeT, $timeArr); ดูมันได้ค่าตามนี้อ่ะครับ ค่าที่เป็น 0 หรือ ติดลบ การช่องที่ผิด ส่วนค่าที่เป็น ค่า + คือ 3 แสดงผลถูกต้องครับ ดังรูป
error1






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-26 15:48:29 By : angelkiller9
 


 

No. 2



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



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


ข่วยหน่อยนะฮ๊าฟฟ ผมทำไม่ได้จริงๆ :'(
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-26 19:22:23 By : angelkiller9
 

 

No. 3



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



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


ได้ละครับ เรียกใช้ 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
 


 

No. 4



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



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


ขอบคุณสำหรับทุกความคิดเห็น นั่งงม จนได้ ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-26 20:51:55 By : angelkiller9
 

   

ค้นหาข้อมูล


   
 

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

Load balance : Server 00
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 อัตราราคา คลิกที่นี่