|
|
|
จะแบ่งหน้าการแสดงผลกับตารางที่ดึงข้อมูลแบบ ตาราง 2 มิติ ทำยังไงค่ะ ขอคำแนะนำหน่อยคะ |
|
|
|
|
|
|
|
ขอคำแนะนำจากผู้รู้หน่อยคะ
คือว่า จากรูปภาพ ต้องการให้แบ่งหน้าแสดงข้อมูล หน้าหนึ่งให้แสดงผลเพียง 5 คอลัมน์ พอคลิกหน้าจัดไปก็แสดงผล คอลัมน์ที่หลือถัดไป 5 คอลัมอีกอะ (ตารางที่ดึงขอ้มูลมาแสดงตอนนี้ไป เป็นการวนลูปดึงข้อมูลแสดงผลแบบ 2 มิติ คะ)
ทำต่อไปไม่ถูกแล้วคะ ขอคำแนะนำหน่อยคะ
โค้ดดังต่อไปนี้คะCode (PHP)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<title>ShowResult</title>
<style type="text/css">
<!--
.style2 {font-size: 14px; }
.style10 {
font-size: 18px;
font-weight: bold;
}
@media print
{
#non-printable { display: none; }
#printable { display: block; }
#head,#foot { display:none}
#ad{ display:none;}
#leftbar{ display:none;}
#contentarea{ width:100%;}
}
@page { size 8.5in 11in; margin: 2cm }
.style13 {font-size: 14; font-weight: bold; }
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
.style21 {font-size: 12}
.style24 {
font-size: 10px;
font-weight: bold;
}
.style25 {font-size: 10px}
-->
</style>
</head>
<body>
<?include ('function_inc.php');?>
<?
$slevel=$_SESSION['slevel'];
include('connect.php');
$reqno=$_GET['req_no'];
$labcode=$_GET['lab_code'];
$id = $_GET['hn'];
$string=$id;
$x=strlen($string);
if($x<7)
{
$y=7-$x;
}
$z=str_repeat(" ",$y).$string;
$sql="SELECT P.hn,rtrim(T.titleName) +' ' +rtrim(P.firstName) +' ' +rtrim(P.lastName) as fullname,
P.addr1,P.moo,TB.tambonName,R.regionName,A.areaName,P.sex,P.birthDay
from PATIENT P(NOLOCK)
LEFT JOIN PTITLE T(NOLOCK) ON P.titleCode = T.titleCode
left join AREA A(NOLOCK)on A.areaCode = P.areaCode
left join REGION R (NOLOCK)on R.regionCode = P.regionCode
left join Tambon TB (NOLOCK)on TB.tambonCode = P.regionCode+P.tambonCode
where P.hn='$z' ";
$result = mssql_query($sql);
$row_detail = mssql_fetch_array($result);
$fullName = $row_detail['fullname'];
$sex = $row_detail['sex'];
$hn = $row_detail['hn'];
$add = $row_detail['addr1'];
$moo = $row_detail['moo'];
$tambon = $row_detail['tambonName'];
$region = $row_detail['regionName'];
$area = $row_detail['areaName'];
$birthday = $row_detail['birthDay'];
?>
<div id="non-printable">
<input type='button' value='Print Result' onclick ='window.print()'>
</div>
<table width="80%" border="0" align="center" cellpadding="2" cellspacing="2" style="border: 1px dashed #808080">
<tr>
<td width="1%"> </td>
<td colspan="7">
<div align="right"><span class="style10">
<? if ($_GET['lab_type']=='H'){
echo "งานโลหิตวิทยา";
echo " (H)";
}
else if ($_GET['lab_type']=='C'){
echo "งานเคมีคลินิก";
echo " (C)";
}
else if ($_GET['lab_type']=='U'){
echo "Microscopy";
echo " (U)";
}
else if ($_GET['lab_type']=='O'){
echo "Out lAB";
echo " (O)";
}
else if ($_GET['lab_type']=='I'){
echo "งานภูมิคุ้มกันวิทยา";
echo " (I)";
}
else if ($_GET['lab_type']=='M'){
echo "งานจุลชีววิทยาคลินิก";
echo " (M)";
}
else {
echo "Blood bank";
echo " (B)";
}?>
</span></div></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td colspan="7"><div align="right"><strong>โรงพยาบาล สุราษฎร์ธานี</strong></div></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td width="20%"><div align="right" class="style13 style2">ชื่อ-สกุล :</div></td>
<td width="21%"><span class="style13 style2"><? echo "$fullName";?></span></td>
<td width="9%"><div align="right" class="style13 style2">HN :</div></td>
<td width="11%"><span class="style13 style2"><? echo "$hn";?></span></td>
<td width="6%"><div align="right"><span class="style2">เพศ :</span></div></td>
<td width="6%"><span class="style2"><? echo "$sex";?></span></td>
<td width="21%"> </td>
<td width="5%"> </td>
</tr>
<tr>
<td><span class="style21"></span></td>
<td><div align="right" class="style21">ที่อยู่</div></td>
<td colspan="7"><span class="style21"><? echo "$add";?>หมู่ <? echo "$moo";?>ต.<? echo "$tambon"; ?> อ. <? echo "$region"; ?> จ. <? echo "$area"; ?> </span></td>
</tr>
</table>
<?
//select ข้อมูลแสดงผลเป็นหัวตาราง
$sqls =" SELECT LD.req_no,H.req_date
FROM (((((Labreq_h H(NOLOCK)
INNER JOIN PATIENT P(NOLOCK) ON (H.hn = P.hn)
LEFT JOIN OPD_H O(NOLOCK) ON (H.hn = O.hn) AND(H.reg_flag = O.regNo)))
left join DEPT DT (NOLOCK) on (H.reqFrom = DT.deptCode)
LEFT JOIN PTITLE T(NOLOCK) ON P.titleCode = T.titleCode)
LEFT JOIN DOCC D(NOLOCK) ON H.docCode = D.docCode)
LEFT JOIN LabUnit U(NOLOCK) ON (H.labUnit = U.labUnit) )
Left join Ipd_h I on H.hn =I.hn and H.reg_flag=I.regist_flag
Left join Ward W on H.reqFrom = W.ward_id
left join Bill_h BH on H.hn=BH.hn and H.reg_flag=BH.regNo
left join Paytype PT on BH.useDrg = PT.pay_typecode
left join Labres_d LD on LD.req_no=H.req_no
LEFT JOIN Labre_s S(NOLOCK) ON ((S.lab_code = LD.lab_code) And (S.res_run_no = LD.res_item))
LEFT JOIN lres_d2 R2(NOLOCK) ON ((LD.req_no=R2.req_no)AND(LD.lab_code=R2.labcode)
AND(LD.organism=R2.organism) AND (LD.res_item = R2.res_item))
left join Labreq_d RD on (RD.req_no=H.req_no) and (RD.lab_code=S.lab_code) and (RD.lab_type=S.labType )
LEFT JOIN Lab L on (S.lab_code=L.labCode) and (L.labType=S.labType)
LEFT JOIN Labspcm SP on (SP.specimenID=RD.specimenID) and (SP.lab_type=RD.lab_type)
where H.hn='$z'
and LD.lab_code='$labcode'
and (RD.reverse_flag='' or RD.reverse_flag is Null)
group by H.req_date,LD.req_no
order by LD.req_no desc ";
$rsItem = mssql_query($sqls);
/// เริ่มแบ่งหน้า
$Num_Rows = mssql_num_rows($rsItem);
$Per_Page = 5; // Per Page
$Page = $_GET["Page"];
if(!$_GET["Page"])
{
$Page=1;
}
$Prev_Page = $Page-1;
$Next_Page = $Page+1;
$Page_Start = (($Per_Page*$Page)-$Per_Page);
if($Num_Rows<=$Per_Page)
{
$Num_Pages =1;
}
else if(($Num_Rows % $Per_Page)==0)
{
$Num_Pages =($Num_Rows/$Per_Page) ;
}
else
{
$Num_Pages =($Num_Rows/$Per_Page)+1;
$Num_Pages = (int)$Num_Pages;
}
$Page_End = $Per_Page * $Page;
IF ($Page_End > $Num_Rows)
{
$Page_End = $Num_Rows;
}
///////////////////////////////
$item_id = array();
$item = array();
$i = 0;
while($value = mssql_fetch_assoc($rsItem)){
$item_id[$i] = $value['req_no']; //เก็บ ID สำหรับกำหนดเงื่อนไขในการวนลูปแนวกว้าง
$item[$i] = $value ['req_date']; //เก็บตัวแปร item สำหรับแสดงผลหัว column
$i ++;
}
mssql_free_result($rsItem); //สั่งคืนค่าหน่วยความจำเพราะ $rsTopic ไม่มีการใช้งานอีกแล้ว
//select ข้อมูลด้านข้าง คอลัมน์แรก
$sql =" select distinct(LD.result_name)as resultName,L.sequence,S.printorder,LD.res_item
FROM (((((Labreq_h H(NOLOCK)
INNER JOIN PATIENT P(NOLOCK) ON (H.hn = P.hn)
LEFT JOIN OPD_H O(NOLOCK) ON (H.hn = O.hn) AND(H.reg_flag = O.regNo)))
left join DEPT DT (NOLOCK) on (H.reqFrom = DT.deptCode)
LEFT JOIN PTITLE T(NOLOCK) ON P.titleCode = T.titleCode)
LEFT JOIN DOCC D(NOLOCK) ON H.docCode = D.docCode)
LEFT JOIN LabUnit U(NOLOCK) ON (H.labUnit = U.labUnit) )
Left join Ipd_h I on H.hn =I.hn and H.reg_flag=I.regist_flag
Left join Ward W on H.reqFrom = W.ward_id
left join Bill_h BH on H.hn=BH.hn and H.reg_flag=BH.regNo
left join Paytype PT on BH.useDrg = PT.pay_typecode
left join Labres_d LD on LD.req_no=H.req_no
LEFT JOIN Labre_s S(NOLOCK) ON ((S.lab_code = LD.lab_code) And (S.res_run_no = LD.res_item))
LEFT JOIN lres_d2 R2(NOLOCK) ON ((LD.req_no=R2.req_no)AND(LD.lab_code=R2.labcode)
AND(LD.organism=R2.organism) AND (LD.res_item = R2.res_item))
left join Labreq_d RD on (RD.req_no=H.req_no) and (RD.lab_code=S.lab_code) and (RD.lab_type=S.labType )
LEFT JOIN Lab L on (S.lab_code=L.labCode) and (L.labType=S.labType)
LEFT JOIN Labspcm SP on (SP.specimenID=RD.specimenID) and (SP.lab_type=RD.lab_type)
where H.hn='$z'
and LD.lab_code='$labcode'
and (RD.reverse_flag='' or RD.reverse_flag is Null)
group by LD.result_name,L.sequence,S.printorder,LD.res_item
order by L.sequence,S.printorder";
$rsValue = mssql_query($sql);
$num_rows = mssql_num_rows($rsValue);// นับจำนวนแถวว่ามีข้อมูลหรือไม่
?>
<?
if($num_rows>0){//ถ้ามีก็ให้แสดงผลตาราง
?>
<table width="80%" border="0" align="center" cellpadding="1" cellspacing="1" bordercolor="#99CCFF" style="border: 1px dashed #808080">
<tr bgcolor="#FFCC99">
<td align="center"><span class="style24">LabName</span></td>
<?
for($i=0;$i<count($item_id);$i++){
?>
<td align="center"><span class="style24">
<? echo showdate($item[$i]);?>
</span></td>
<?
}
?>
<?
for($ii=$Page_Start;$ii<$Page_End;$ii++)
{
?>
</tr>
<?
while($ListValue = mssql_fetch_assoc($rsValue)){//วนลูปแสดงผลข้อมูลมิติที่ 1 ตามแนวตั้ง /แถว
?>
<tr bgcolor="#FFCCCC">
<td align="left"><span class="style25">
<?=$ListValue['resultName']//แสดงผลชื่อพื้ที่?>
</span></td>
<?
/*วนลูปแสดงข้อมูลมิติที่ 2ตามแนวขวาง / คอลัมส์ */
for($i=0;$i<count($item_id);$i++){ //วนลูปให้เท่ากับจำนวน item
$sql = "SELECT RD.lab_name,H.req_date,LD.lab_code,LD.result_name,LD.real_res,LD.low_normal,LD.high_normal
,LD.resNormal,S.printorder,LD.res_item,H.req_no
FROM (((((Labreq_h H(NOLOCK)
INNER JOIN PATIENT P(NOLOCK) ON (H.hn = P.hn)
LEFT JOIN OPD_H O(NOLOCK) ON (H.hn = O.hn) AND(H.reg_flag = O.regNo)))
left join DEPT DT (NOLOCK) on (H.reqFrom = DT.deptCode)
LEFT JOIN PTITLE T(NOLOCK) ON P.titleCode = T.titleCode)
LEFT JOIN DOCC D(NOLOCK) ON H.docCode = D.docCode)
LEFT JOIN LabUnit U(NOLOCK) ON (H.labUnit = U.labUnit) )
Left join Ipd_h I on H.hn =I.hn and H.reg_flag=I.regist_flag
Left join Ward W on H.reqFrom = W.ward_id
left join Bill_h BH on H.hn=BH.hn and H.reg_flag=BH.regNo
left join Paytype PT on BH.useDrg = PT.pay_typecode
left join Labres_d LD on LD.req_no=H.req_no
LEFT JOIN Labre_s S(NOLOCK) ON ((S.lab_code = LD.lab_code) And (S.res_run_no = LD.res_item))
LEFT JOIN lres_d2 R2(NOLOCK) ON ((LD.req_no=R2.req_no)AND(LD.lab_code=R2.labcode)
AND(LD.organism=R2.organism) AND (LD.res_item = R2.res_item))
left join Labreq_d RD on (RD.req_no=H.req_no) and (RD.lab_code=S.lab_code) and (RD.lab_type=S.labType )
LEFT JOIN Lab L on (S.lab_code=L.labCode) and (L.labType=S.labType)
LEFT JOIN Labspcm SP on (SP.specimenID=RD.specimenID) and (SP.lab_type=RD.lab_type)
where H.hn='$z'
and LD.lab_code='$labcode'
and LD.res_item={$ListValue['res_item']}
and H.req_no={$item_id[$i]}
and (RD.reverse_flag='' or RD.reverse_flag is Null)
order by L.sequence,S.lab_code,S.printorder,H.req_no desc";
$rsColValue = mssql_query($sql);
$ColValue = mssql_fetch_assoc($rsColValue); //แน่ใจว่าในแต่ละเซลมีค่าเดียว ไม่ต้องวนลูปทำ mysql_fetch_assoc เพราะถึงแม้วนลูปค่าที่ได้ก็จะมีค่าเดียวเเหมือนกัน
?>
<td align="center"><span class="style25">
<?
if ($slevel<>"9")
{
if (( $ColValue['lab_code'] =="36350 " )or($ColValue['lab_code'] =="36351 " )or($ColValue['lab_code'] =="36354 " )){
echo "******";
}
else {
echo ($ColValue['real_res']);
}
}
else {
echo ($ColValue['real_res']);
}
?>
<? if ( $ColValue['resNormal']=="N"){
echo " **";
}
else {
echo " ";
}
?>
</span></td>
<?
mssql_free_result($rsColValue); //คืนค่าเมื่อไม่ได้ใช้แล้ว
}//end for
}//end while
?>
</tr>
<?
}
?>
</table>
<?
}
else{
echo "<p align=\"center\"><strong>ไม่มีข้อมูล</strong></p>";
}
?>
<? // แสดง เลขคลิกหน้าถัดไป ?>
<br>
Total <?= $Num_Rows;?> Record : <?=$Num_Pages;?> Page :
<?
if($Prev_Page)
{
echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page&hn=$hn&lab_code=$labcode&lab_type=$lab_type'><< Back</a> ";
}
for($ii=1; $ii<=$Num_Pages; $ii++){
if($ii != $Page)
{
echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$ii&hn=$hn&lab_code=$labcode&lab_type=$lab_type'>$ii</a> ]";
}
else
{
echo "<b> $ii </b>";
}
}
if($Page!=$Num_Pages)
{
echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page&hn=$hn&lab_code=$labcode&lab_type=$lab_type'>Next>></a> ";
}
?>
<?
mssql_free_result($rsValue); //คืนค่าหน่วยความจำ
mssql_close($connect ); //ปิดการติดต่อฐานข้อมูล
?>
</body>
</html>
^__^ ยาวไปหน่อย
Tag : PHP, Ms SQL Server 2005, CakePHP
|
|
|
|
|
|
Date :
2012-07-27 12:58:09 |
By :
katae_kapolo |
View :
4654 |
Reply :
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อยากช่วยน่ะครับ แต่ code เยอะเกิน ดูไม่ไหวครับ
|
|
|
|
|
Date :
2012-07-28 06:34:09 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คิคิ ...... ^__^ งั้นรบกวนถามใหม่ค่ะ
จากภาพ คะ
โค้ดดังนี้คะ
Code (PHP)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<title>Untitled Document</title>
</head>
<body>
<?
$host = "localhost"; //ชื่อ database server
$user = "root"; //ชื่อผู้ใช้ databse ที่มีสิทธิ์
$pass = "123456"; //รหัสผ่าน
$dbase = "test"; //ชื่อฐานข้อมูลที่จะใช้
$link = mysql_connect($host,$user,$pass) or die("Connect error : ".mysql_error()); //ติดต่อ database
mysql_select_db($dbase); //เลือกฐานข้อมูลที่จะใช้
?>
<? $sql = "SELECT type_id, type_name FROM tb_type ORDER BY type_id"; //selec ข้อมูลสำหรับแสดงผลเป็นหัวตาราง
$rsItem = mysql_query($sql) or die("Select error : ".mysql_error()); //สร้าง result set
$item_id = array();
$item = array();
$i = 0;
while($value = mysql_fetch_assoc($rsItem)){/*วนลูปดึงข้อมูลเก็บเข้า array อาจจะใช้ mysql_fetch_array ก็ได้การใช้งานเหมือนกันแต่
mysql_fetch_array จะกว้างกว่าตรงที่สามารถระบุได้ทั้งตำแหน่งและชื่อของฟิลด์*/
$item_id[$i] = $value['type_id']; //เก็บ id สำหรับกำหนดเงื่อนไขในการวนลูปแนวกว้าง
$item[$i] = $value['type_name']; //เก็บตัวแปร item สำหรับแสดงผลหัว column
$i ++;
}
mysql_free_result($rsItem); //สั่งคืนค่าหน่วยความจำเพราะ $rsTopic ไม่มีการใช้งานอีกแล้ว
$sql = "SELECT DISTINCT(tb_value.id),name FROM tb_value RIGHT JOIN tb_area ON tb_area.id = tb_value.id ORDER BY tb_value.id";
$rsValue = mysql_query($sql) or die("Select error : ".mysql_error());// SELECT ข้อมูล id,name จากตาราง tb_value โดยมีการตรวจสอบกับตาราง tb_area ซึ่งเป็น lookup table
$num_rows = mysql_num_rows($rsValue);//นับจำนวนแถวว่ามีข้อมูลหรือไม่
?>
<?
if($num_rows>0){//ถ้ามีก็ให้แสดงผลตารางข้อมูล
?>
<table width="400" border="0" bgcolor="#000000">
<tr bgcolor="#FFFFFF">
<td width="169" align="center"><strong>พื้นที่</strong></td>
<?
for($i=0;$i<count($item_id);$i++){
?>
<td width="221" align="center"><strong><?=$item[$i]//แสดงผลหัวคอลัมน์?></strong></td>
<?
}
?>
</tr>
<?
while($ListValue = mysql_fetch_assoc($rsValue)){//วนลูปแสดงผลข้อมูลมิติที่ 1 ตามแนวตั้ง /แถว
?>
<tr bgcolor="#FFFFFF">
<td align="left"> <?=$ListValue['name']//แสดงผลชื่อพื้นที่?></td>
<?
/*วนลูปแสดงผลข้อมูลมิติที่ 2 ตามแนวขวาง /คอลัมน์*/
for($i=0;$i<count($item_id);$i++){ //วนลูปให้เท่ากับจำนวน item
$sql = "SELECT number FROM tb_value WHERE id={$ListValue['id']} AND type_id={$item_id[$i]}";//วนลูปหาค่าในแต่ละเชลล์ของตารางตามค่าในคีย์หลักของแถว และ คอลัมน์
$rsColValue = mysql_query($sql) or die("Select error : ".mysql_error());
$ColValue = mysql_fetch_assoc($rsColValue); //แน่ใจว่าในแต่ละเชลล์มีค่าเดียว จึงไม่ต้อวนลูป ทำ mysql_fetch_assoc เพราะถึงแม้วนลูปค่าที่ได้ก็จะมีแค่ค่าเดียวเหมือนกัน
?>
<td align="center"><?=number_format($ColValue['number'])?></td>
<?
mysql_free_result($rsColValue); //คืนค่าเมื่อไม่ได้ใช้แล้ว
}//end for
}//end while
mysql_free_result($rsValue); //คืนค่าหน่วยความจำ
?>
</tr>
</table>
<?
}
else{
echo "<p align=\"center\"><strong>ไม่มีข้อมูล</strong></p>";
}
?>
<?
mysql_close($link); //ปิดการติดต่อฐานข้อมูล
?>
</body>
</html>
ปัญหาคือว่า ต้องการแบ่งหน้าการแสดงผลเหล่านี้ค่ะ ให้หนึ่งหน้าแสดงหน้าละ 3 คอลัมน์(คอลัมน์ชื่อของผลไม) คะ พอคลิกหน้าถัดไปก้แสดงข้อมูลคอลัมที่เหลือค่ะ
|
ประวัติการแก้ไข 2012-07-31 10:33:14
|
|
|
|
Date :
2012-07-31 10:28:53 |
By :
katae_kapolo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่รู้ใช่แบบที่ต้องการหรือเปล่า ลองเอาไปประยุกต์ดูนะครับ
Code (PHP)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jquery show hide column</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(function(){
var tb = $('#column_hidable');
var cbp = $('#checkbox_panel');
tb.find('tr:first > td').each(function(){
var cb = $('<input type="checkbox" checked="checked" />').click(function(){
var cbidx = cbp.find(':checkbox').index($(this));
tb.find('tr').each(function(){
$(this).find('td').eq(cbidx).toggle();
});
});
cb.appendTo(cbp).after($(this).text()+'<br'+'/>');
});
});
</script>
</head>
<body>
<?php
$cols = array("Field 1","Field 2","Field 3","Field 4","Field 5");
?>
<div id="checkbox_panel"></div>
<table border="1" cellspacing="0" cellpadding="5" id="column_hidable">
<tr bgcolor="#CC99FF">
<?php foreach($cols as $col_name):?>
<td><?php echo $col_name;?></td>
<?php endforeach;?>
</tr>
<?php $i=0; while($i++<5):?>
<tr>
<?php foreach($cols as $col_name):?>
<td><?php echo $col_name;?></td>
<?php endforeach;?>
</tr>
<?php endwhile;?>
</table>
</body>
</html>
credit http://web-programming-bookmark.blogspot.com/2010/11/jquery-showhide-column-checkbox.html
|
|
|
|
|
Date :
2012-07-31 15:09:59 |
By :
maxairzoom |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วคะ ตามโค้ดเลย ^^
Code (PHP)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<title>Untitled Document</title>
</head>
<body>
<?
$host = "localhost"; //ชื่อ database server
$user = "root"; //ชื่อผู้ใช้ databse ที่มีสิทธิ์
$pass = "123456"; //รหัสผ่าน
$dbase = "test"; //ชื่อฐานข้อมูลที่จะใช้
$link = mysql_connect($host,$user,$pass) or die("Connect error : ".mysql_error()); //ติดต่อ database
mysql_select_db($dbase); //เลือกฐานข้อมูลที่จะใช้
$sql = "SELECT type_id, type_name FROM tb_type ORDER BY type_id "; //selec ข้อมูลสำหรับแสดงผลเป็นหัวตาราง
$rsItem_e = mysql_query($sql) or die("Select error : ".mysql_error()); //สร้าง result set
$Num_Rows = mysql_num_rows($rsItem_e);
?>
<? //// เริ่มกำหนดการแสดงหน้า
$Per_Page = 3; // Per Page
$Page = $_GET["Page"];
if(!$_GET["Page"])
{
$Page=1;
}
$Prev_Page = $Page-1;
$Next_Page = $Page+1;
$Page_Start = (($Per_Page*$Page)-$Per_Page);
if($Num_Rows<=$Per_Page)
{
$Num_Pages =1;
}
else if(($Num_Rows % $Per_Page)==0)
{
$Num_Pages =($Num_Rows/$Per_Page) ;
}
else
{
$Num_Pages =($Num_Rows/$Per_Page)+1;
$Num_Pages = (int)$Num_Pages;
}
?>
<? $sql = "SELECT type_id, type_name FROM tb_type ORDER BY type_id LIMIT $Page_Start , $Per_Page"; //selec ข้อมูลสำหรับแสดงผลเป็นหัวตาราง
$rsItem = mysql_query($sql) or die("Select error : ".mysql_error()); //สร้าง result set
$item_id = array();
$item = array();
$i = 0;
while($value = mysql_fetch_assoc($rsItem)){/*วนลูปดึงข้อมูลเก็บเข้า array อาจจะใช้ mysql_fetch_array ก็ได้การใช้งานเหมือนกันแต่
mysql_fetch_array จะกว้างกว่าตรงที่สามารถระบุได้ทั้งตำแหน่งและชื่อของฟิลด์*/
$item_id[$i] = $value['type_id']; //เก็บ id สำหรับกำหนดเงื่อนไขในการวนลูปแนวกว้าง
$item[$i] = $value['type_name']; //เก็บตัวแปร item สำหรับแสดงผลหัว column
$i ++;
}
mysql_free_result($rsItem); //สั่งคืนค่าหน่วยความจำเพราะ $rsTopic ไม่มีการใช้งานอีกแล้ว
$sql = "SELECT DISTINCT(tb_value.id),name FROM tb_value RIGHT JOIN tb_area ON tb_area.id = tb_value.id ORDER BY tb_value.id";
$rsValue = mysql_query($sql) or die("Select error : ".mysql_error());// SELECT ข้อมูล id,name จากตาราง tb_value โดยมีการตรวจสอบกับตาราง tb_area ซึ่งเป็น lookup table
$num_rows = mysql_num_rows($rsValue);//นับจำนวนแถวว่ามีข้อมูลหรือไม่
?>
<?
if($num_rows>0){//ถ้ามีก็ให้แสดงผลตารางข้อมูล
?>
<table width="400" border="0" bgcolor="#000000">
<tr bgcolor="#FFFFFF">
<td width="169" align="center"><strong>พื้นที่</strong></td>
<?
for($i=0;$i<count($item_id);$i++){
?>
<td width="221" align="center"><strong><?=$item[$i]//แสดงผลหัวคอลัมน์?></strong></td>
<?
}
?>
</tr>
<?
while($ListValue = mysql_fetch_assoc($rsValue)){//วนลูปแสดงผลข้อมูลมิติที่ 1 ตามแนวตั้ง /แถว
?>
<tr bgcolor="#FFFFFF">
<td align="left"> <?=$ListValue['name']//แสดงผลชื่อพื้นที่?></td>
<?
/*วนลูปแสดงผลข้อมูลมิติที่ 2 ตามแนวขวาง /คอลัมน์*/
for($i=0;$i<count($item_id);$i++){ //วนลูปให้เท่ากับจำนวน item
$sql = "SELECT number FROM tb_value WHERE id={$ListValue['id']} AND type_id={$item_id[$i]}";//วนลูปหาค่าในแต่ละเชลล์ของตารางตามค่าในคีย์หลักของแถว และ คอลัมน์
$rsColValue = mysql_query($sql) or die("Select error : ".mysql_error());
$ColValue = mysql_fetch_assoc($rsColValue); //แน่ใจว่าในแต่ละเชลล์มีค่าเดียว จึงไม่ต้อวนลูป ทำ mysql_fetch_assoc เพราะถึงแม้วนลูปค่าที่ได้ก็จะมีแค่ค่าเดียวเหมือนกัน
?>
<td align="center"><?=number_format($ColValue['number'])?></td>
<?
mysql_free_result($rsColValue); //คืนค่าเมื่อไม่ได้ใช้แล้ว
}//end for
}//end while
mysql_free_result($rsValue); //คืนค่าหน่วยความจำ
?>
</tr>
</table>
<?
}
else{
echo "<p align=\"center\"><strong>ไม่มีข้อมูล</strong></p>";
}
?>
<? /// แสดงเลขคลิหน้าถัดไป?>
<br>
Total <?= $Num_Rows;?> Record : <?=$Num_Pages;?> Page :
<?
if($Prev_Page)
{
echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page'><< Back</a> ";
}
for($ii=1; $ii<=$Num_Pages; $ii++){
if($ii != $Page)
{
echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$ii'>$ii</a> ]";
}
else
{
echo "<b> $ii </b>";
}
}
if($Page!=$Num_Pages)
{
echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page'>Next>></a> ";
}
?>
<?
mysql_close($link); //ปิดการติดต่อฐานข้อมูล
?>
</body>
</html>
ทดสอบใช้กับ MySQL ได้ตรงตามความต้องการ ถูกใจม๊ากคะ
ถ้าฐานข้อมูลเป็น MSSQL จะทำยังไงน้อ ............ ขอคำแนะนำหน่อยคะ ^^
|
|
|
|
|
Date :
2012-07-31 20:37:17 |
By :
katae_kapolo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|