 |
การแบ่งหน้าโดยให้แสดงผลแต่ละเดือนไม่เกิน 5 บรรทัด เมื่อเลือกเดือนที่ต้องการหน้าจำจะแสดงรายละเอียดถูกต้องในหน้าที่หนึ่งเท่านั้น |
|
 |
|
|
 |
 |
|
code ที่เขียนไว้เป็นแบบนี้ครับ... ช่วยดูให้หน่อยนะครับต้องการแบ่งการแสดงผลหน้าละ 5 บรรทัด สมมติว่าเลือกเดือนกุมภาพันธ์ซึ่งมี13 บรรทัด ดังนั้นโปรแกรมจะแสดงผล 3 หน้า โดยข้อมูลที่ปรากฎขึ้นมาในหน้าแรกมีรายชื่อเดือนที่เลือก และยอดยกมาถูกต้อง แต่พอไปติ๊กเลือกไปหน้าที่สอง ปรากฎว่ารายชื่อเดือนไม่มี และยอดยกมาก็ไม่มี ผมไม่รู้จะแก้ไขอย่างไร ช่วยให้ความกระจ่างด้วยครับ ขอบคุณมากครับ
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<html>
<?php require_once('Connections/cnqmss.php'); ?>
<?
//กำหนดค่าตัวแปรให้แต่ละเดือน
$jan = "มกราคม";
$feb = "กุมภาพันธ์";
$mar = "มีนาคม";
$apr = "เมษายน";
$may = "พฤษภาคม";
$jun = "มิถุนายน";
$jul = "กรกฎาคม";
$aug = "สิงหาคม";
$sep = "กันยายน";
$oct = "ตุลาคม";
$nov = "พฤศจิกายน";
$dec = "ธันวาคม";
?>
<form action="" method="post">
<select name="mount" id="mount" >
<option value="">ระบุเดือน</option>
<option value="มกราคม">มกราคม</option>
<option value="กุมภาพันธ์">กุมภาพันธ์</option>
<option value="มีนาคม">มีนาคม</option>
<option value="เมษายน">เมษายน</option>
<option value="พฤษภาคม">พฤษภาคม</option>
<option value="มิถุนายน" >มิถุนายน</option>
</select><input type="submit">
</form>
<?
//if($m==""){$m="1";} //ถ้าไม่มีการเลือกให้เป็นเดือน ม.ค.
switch ($mount)
{
case $jan:
$cym="201001"; //เดือนที่เรียกดู
$pym="200912"; //เดือนที่แล้ว
break;
case $feb:
$cym="201002"; //เดือนที่เรียกดู
$pym="201001"; //เดือนที่แล้ว
break;
case $mar:
$cym="201003"; //เดือนที่เรียกดู
$pym="201002"; //เดือนที่แล้ว
break;
case $apr:
$cym="201004"; //เดือนที่เรียกดู
$pym="201003"; //เดือนที่แล้ว
break;
case $may:
$cym="201005"; //เดือนที่เรียกดู
$pym="201004"; //เดือนที่แล้ว
break;
case $jun:
$cym="201006"; //เดือนที่เรียกดู
$pym="201005"; //เดือนที่แล้ว
break;
}
mysql_select_db($database_cnqmss, $cnqmss);
//เอารายการที่มีการเบิกน้ำมันที่ผ่านมาจนถึงเดือนที่เรียกดูมาแสดงทั้งหมด เงื่อนไขคือ where date_oil <= เดือนที่เรียกดู
$sql1="SELECT gas_id,namegas,unit, sum(num_in)as n_in, sum(num_out)as n_out , sum(stock)as n_stock
FROM mount
WHERE date_format(date_oil,'%Y%m')<='$cym' group by gas_id ";
//echo $sql1;
$rso=mysql_query($sql1,$cnqmss)or die(mysql_error());
//echo mysql_num_rows($rso);
//$row=($rso); //จำนวนแถวที่เปิดเรคอร์ดได้
$Num_Rows = mysql_num_rows($rso);
//echo $Num_Rows . " " ;
// echo "$cym = " . $cym . " $pym = " . $pym;
$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;
}
$sql1 .=" order by gas_id ASC LIMIT $Page_Start , $Per_Page";
$rso = mysql_query($sql1);
?>
<center>รายการประจำเดือน : <?=$mount?></center>
<table border="1" width="100%">
<tr bgcolor="#999999">
<td width="4%" align="center">ลำดับ</td>
<td width="41%" align="center">รายการ</td>
<td width="10%" align="center">หน่วยนับ</td>
<td width="10%" align="center">ยอดยกมา</td>
<td width="9%" align="center">ยอดรับ</td>
<td width="9%" align="center">ยอดรวม</td>
<td width="9%" align="center">ยอดจ่าย</td>
<td width="8%" align="center">คงเหลือ</td>
</tr>
<?
$i=0;
while($rs=mysql_fetch_array($rso))
{
$i=$i+1;
//ของเดือนที่เรียกดูปัจจุบัน
$gas_id=$rs["gas_id"];
$gname=$rs["namegas"];
$unit=$rs["unit"];
$sumin=$rs["n_in"];
$sumout=$rs["n_out"];
$sumstock=$rs["n_stock"];
//ระหว่างวนลูปให้เอาหมายเลขน้ำมันไปเช็คดูในฐานข้อมูลตั้งแต่อดีตจนถึงเดือนที่แล้ว (เดือนก่อนเดือนที่เรียกดู) มียอดคงเหลือที่จะยกมาเท่าไหร่
//เงื่อนไขคือ where date_oil <=เดือนก่อนหน้า
$sql2="SELECT gas_id,sum(stock)as n_stock
FROM mount
WHERE date_format(date_oil,'%Y%m')<='$pym' and gas_id='$gas_id' group by gas_id";
$rspo=mysql_query($sql2,$cnqmss);
$rsp=mysql_fetch_array($rspo);
$presum=$rsp["n_stock"]; //ยอดยกมา
//นำยอดคงเหลือมาบวกกับยอดรับของเดือนปัจจุบัน
$sumtotal=$sumin+$presum; //ยอดรวม
//echo "<tr><td colspan=181 align='left'>".$sql2."</td></tr>" //ลองปรินท์ sql2 ออกมาดู
?>
<tr>
<td><?=$i?></td>
<td><?=$gas_id?><?=$gname?></td>
<td><?=$unit?></td>
<td align="right"><?=$presum?></td>
<td align="right"><?=$sumin?></td>
<td align="right"><?=$sumtotal?></td>
<td align="right"><?=$sumout?></td>
<td align="right"><?=$sumstock?></td>
</tr>
<?
}
?>
</table>
<center>
<br>
จำนวนทั้งสิ้น <?= $Num_Rows;?> บรรทัด : จาก <?=$Num_Pages;?> หน้า :
<?
if($Prev_Page)
{
echo "<a href=\"$PHP_SELF?Page=$Prev_Page&&cym=$cym\"><< - ย้อนกลับ </a>";
}
for($i=1; $i<=$Num_Pages; $i++){
if($i != $Page)
{
echo "[ <a href=\"$PHP_SELF?Page=$i&&cym=$cym\">$i</a> ]";
}
else
{
echo "<b> $i </b>";
}
}
if($Page!=$Num_Pages)
{
echo "<a href=\"$PHP_SELF?Page=$Next_Page&&cym=$cym\"> หน้าถัดไป ->></a>";
}
mysql_close($cnqmss);// ปิดฐานข้อมูล
?>
</body>
</html>
Tag : PHP, MySQL
|
|
 |
 |
 |
 |
Date :
2010-08-27 21:50:52 |
By :
ตู่ |
View :
868 |
Reply :
1 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จะต้องกลับไปดูที่ Query ครับ ลอง echo $sql1 ออกมา แล้วนำไปทดสอบบน phpMyAdmin พร้อมๆ กับการปรับ Query ให้ถูกต้องแล้วเอามาใส่ใหม่ครับ
|
 |
 |
 |
 |
Date :
2010-08-29 08:37:54 |
By :
webmaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|