|
|
|
ถามเรื่อง Code ในการแบ่งหน้าหน่อยค่ะ - 1 2 3 4 5 6 7 8 9 10 |
|
|
|
|
|
|
|
ปัจจุบันการแบ่งหน้าเป็นแบบนี้ค่ะ
1 2 3 4 5 6 7 8 9 10 11 12 13 หน้าต่อไป >>
คือโชว์ทั้งหมดทุกหน้าเลยแต่อยากจะให้เป็นแบบที่ โชว์ประมา 5 หน้าแล้วตัดอ่ะคะ
แบบนี้
<< | < ...3 4 5 6 7... > | >> จะทำได้อย่างไรค่ะ ถ้าจะให้แก้จากcode เก่าอ่ะคะ
อันนี้คือ code เก่าค่ะ
<?
require("../config.inc.php");
require("../auth.inc.php");
error_reporting(E_ALL ^ E_NOTICE);
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<title>Search2</title>
<link rel="stylesheet" type="text/css" href="../style.css">
<style type="text/css">
<!--
.style2 {
font-size: xx-small;
color: #FF0000;
}
.style3 {
color: #000066;
font-weight: bold;
}
.style4 {
font-size: x-small;
color: #0000FF;
font-weight: bold;
}
.style5 {font-size: xx-small}
-->
</style>
<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<form method="POST" name="form1" id="form1" action="smonth2.php"><div align="center">
วันที่ต้องการค้นหา จาก</div><tr class="info">
<td><div align="center">วันที่เริ่มต้น(Start Date):</div></td>
<td width="60%"><div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<select name="dd1" id="select18">
<option value="0"selected>วัน</option>
<? for($i=1;$i<=31;$i++){
if($i<10)
$temp="0".$i;
else $temp=$i;
if(date('d')==$temp)
echo"<option value='$temp'selected>$temp</option>";
else echo"<option value='$temp'>$temp</option>";
}?>
</select>
</font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<select name="mm1" id="select19">
<option value="0" selected>เดือน</option>
<? for($i=1;$i<=12;$i++){
if($i<10)
$temp="0".$i;
else $temp=$i;
if(date('m')==$temp)
echo"<option value='$temp'selected>$temp</option>";
else echo"<option value='$temp'>$temp</option>";
}
?>
</select>
</font><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<select name="yy1" id="select20">
<option value="0" selected>ปี ค.ศ.</option>
<? for($i=2004;$i<=2009;$i++){
$temp=$i;
if(date('Y')==$temp)
echo"<option value='$temp'selected>$temp</option>";
else echo"<option value='$temp'>$temp</option>";
}?>
</select>
</font></div></td>
</tr>
<tr class="info">
<td><div align="center">วันสิ้นสุด(End Date):</div></td>
<td><div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<select name="dd2" id="select21">
<option value="0"selected>วัน</option>
<? for($i=1;$i<=31;$i++){
if($i<10)
$temp="0".$i;
else $temp=$i;
if(date('d')==$temp)
echo"<option value='$temp'selected>$temp</option>";
else echo"<option value='$temp'>$temp</option>";
}?>
</select>
</font> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<select name="mm2" id="select22">
<option value="0" selected>เดือน</option>
<? for($i=1;$i<=12;$i++){
if($i<10)
$temp="0".$i;
else $temp=$i;
if(date('m')==$temp)
echo"<option value='$temp'selected>$temp</option>";
else echo"<option value='$temp'>$temp</option>"; }
?>
</select>
</font><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<select name="yy2" id="select23">
<option value="0" selected>ปี ค.ศ.</option>
<? for($i=2004;$i<=2009;$i++){
$temp=$i;
if(date('Y')==$temp)
echo"<option value='$temp'selected>$temp</option>";
else echo"<option value='$temp'>$temp</option>"; }?>
</select>
</font></div></td>
</tr><BR>
<CENTER><input type="submit" name="Submit" value="ค้นหา">
</CENTER></form>
<hr>
<?
$e_dateadd="$yy1"."-$mm1"."-$dd1";
$e_dateadd2="$yy2"."-$mm2"."-$dd2";
?>
<?
if (empty($e_dateadd) or empty($e_dateadd2))
{
echo"กรุณาเลือกรายการค้นหา ด้วยค่ะ";
exit();
}
else
{
$dbhost="localhost";//ชื่อโฮส
$dbusername="root";//ชื่อผู้ใช้งานฐานข้อมูล MySQL
$dbpassword="123456";//รหัสผ่านของผู้ใช้งานฐานข้อมูล MySQL
$dbname="visitant1";//ชื่อฐานข้อมูล
$connect_mysql = mysql_connect( $dbhost, $dbusername, $dbpassword );
if ( ! $connect_mysql ) die( "ไม่สามารถติดต่อกับ MySQL ได้" );
mysql_select_db( $dbname, $connect_mysql )or die ( "ไม่สามารถเลือกใช้งานฐานข้อมูล$dbname" );
mysql_query("set NAMES tis620 ");
$sql="SELECT * FROM visitor LEFT JOIN (location) ON ( visitor.locNo = location.locNo) WHERE visitor.vdate BETWEEN '$e_dateadd' and '$e_dateadd2' order by visitor.vdate desc,visitor.vtime asc";
$per_page = 20;
if ( !$page )
$page = 1;
$prev_page = $page - 1;
$next_page = $page + 1;
$result = mysql_query( $sql );
$page_start = ( $per_page * $page) - $per_page;
$num_rows = mysql_num_rows( $result );
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;
if ( ( $page > $num_pages ) || ( $page < 0 ) )
print "จำนวน $page มากกว่า $num_pages";
/////////////// คำสั่ง SQL กำหนดลิมิต ให้แสดงผลต่อ 1 หน้า///////////////////////////////
$sql .= " LIMIT $page_start, $per_page";
$result1 = mysql_query( $sql );
if(empty($num_rows)) /* ตรวจสอบว่ามีอยู่หรือยัง */
{
echo"<center><br>ไม่พบข้อมูล วันที่ <b>$e_dateadd</b> ถึง วันที่ <b>$e_dateadd2 <b> </center>";
exit();
}
else
{
?>
<div align="center"><? echo " แสดงรายการค้นหา วันที่ <b>$e_dateadd</b> ถึง วันที่ <b>$e_dateadd2</b> พบ <b>$num_rows</b> Reccord "; ?><br><br>
</div>
<table border="1" align="center" cellspacing="0" bordercolor="#ffffff" class="v1">
<tr class="homespot" id="homespt">
<td >
<div align="center"><font color="#ffffff">ชื่อ</font></div>
</td>
<td >
<div align="center"><font color="#ffffff">นามสกุล</font></div>
</td>
<td >
<div align="center"><font color="#ffffff">บัตรประจำตัว</font></div>
</td>
<td >
<div align="center"><font color="#ffffff">วันที่มาติดต่อ</font></div>
</td>
<td >
<div align="center"><font color="#ffffff">เวลาที่มาติดต่อ</font></div>
</td>
<td >
<div align="center"><font color="#ffffff">สถานที่ติดต่อ</font></div>
</td>
</tr>
<?
while ( $result = mysql_fetch_array( $result1 ) ) //นำค่าี่ที่ผ่านการคิวรี่จากตัวแปร $result มาทำการวนลูปเพื่อเอาค่าในแต่ละฟิลด์ออกมาโชว์แสดงผล
{
$trcolor= ($trcolor=="#E9E9E9") ? "#FFFFFF" : "#E9E9E9";
$id = $result['id'];
$vname = $result['vName'];
$vsurname = $result['vSurname'] ;
$idcard = $result['idCard'];
$vdate = $result['vdate'];
$vtime = $result['vtime'];
$vtime2 = number_format($vtime,2,'.',',') ;
$locName = $result['locName'];
?>
<tr bgcolor="<?echo$trcolor?>">
<td><?echo"<a href='javascript:void(0);' NAME='Window Name' title='Click to view' ".
"onClick=window.open('detail.php?vid=$id','wn','width=1016,height=712,".
"left=0,top=0,toolbar=0,status=0,resizable=1,Enctype=multipart/form-data');>
$vname</a>";?></td>
<td><?echo"$vsurname";?></td>
<td><?echo"$idcard";?></td>
<td><?echo"$vdate";?></td>
<td><?echo"$vtime2";?></td>
<td><?echo"$locName";?></td>
</tr>
<?
}
}
}
?>
รวมทั้งหมด <b><?php echo $num_rows; ?></b> เรคคอร์ด <b><?php echo $num_pages; ?></b> หน้า :
<?php
////////////////// สร้างปุ่มย้อนกลับ ///////////////////////////////
echo"<div id='pagelist' >";
if ( $prev_page )
echo "<a href=\"$PHP_SELF?page=$prev_page&yy1=$yy1&mm1=$mm1&dd1=$dd1&yy2=$yy2&mm2=$mm2&dd2=$dd2\"><<กลับไป </a>";
////////////////// สร้างตัวเลขหน้า ////////////////////////////////
for ( $i=1; $i<=$num_pages; $i++ )
{
if ( $i != $page)
echo " <a href=\"$PHP_SELF?page=$i&yy1=$yy1&mm1=$mm1&dd1=$dd1&yy2=$yy2&mm2=$mm2&dd2=$dd2\">$i</a> ";
else
echo " <b>$i</b> ";
}
/////////////////// สร้างปุ่มเดินหน้า /////////////////////////////////////
if ( $page != $num_pages )
echo "<a href=\"$PHP_SELF?page=$next_page&yy1=$yy1&mm1=$mm1&dd1=$dd1&yy2=$yy2&mm2=$mm2&dd2=$dd2\"> หน้าต่อไป >></a>";
////////////////// ปิดการเชื่อมต่อฐานข้อมูล ////////////////////////////
echo"</div>";
mysql_close( $connect_mysql );
?>
</table>
</body>
</html>
ขอบคุณล่วงหน้านะคะ
Tag : - - - -
|
|
|
|
|
|
Date :
2009-03-06 14:20:32 |
By :
ReOna |
View :
1717 |
Reply :
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก่อนจะตอบกระทู้ ขอแนะนำก่อนนะครับ ถ้าจะโพส โค้ด ควรครอบด้วยแท็กโค้ด ซึ่งเว็บมีให้ มันจะได้ดูง่ายครับ
เพราะบางคนอาจช่วยคุณได้ แต่เข้ามาเห้นโค้ดยุ่งเหยิง ก็ไม่เอาดีกว่า
เข้าเรื่อง
ปัจจุบัน คุณแสดงเลขหน้าจากข้อมูลทั้งหมด กรณีที่คุณอยากแสดง เพียง 5 เลข ก็ใช้ loop 5 ครั้ง
จากตัวแปร $page ซึ่งเป็นเลขหน้าปัจจุบัน เราจะต้องหาว่ามีหน้าอยู่ก่อนหรืออยู่หลังอีกหรือไม่
ก็จะได้ดังนี้ ลองเอาไปแปลงดูครับ
Code (PHP)
<?php
if(isset($_GET["p"]))
$page = $_GET["p"];
else
$page = 1;
$all_page = 12;
$show = 5;
$start = 1;
$end = $start+$show;
$add = $page-$show;
$tmp = floor($page/($show));
if($page%$show !=0)
{
$start += ($tmp*$show);
}
else
$start += $add;
$end = $start+$show;
if($start > 1)
{
echo "".($start-1)."< "; // before page
}
for($start;$start < $end;$start++)
{
if($start <= $all_page) // check not over all page
{
if($page == $start)
echo " <b>".$start."</b> "; // current page
else
echo " ".$start." "; // link page
}
}
if($end < $all_page)
{
echo " >".($end); // next page
}
?>
|
|
|
|
|
Date :
2009-03-06 16:06:34 |
By :
lozomac |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณค่ะ
กำลังหาอยู่เหมือนกัน
|
|
|
|
|
Date :
2009-03-06 22:52:41 |
By :
Kmay |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากๆคะ
|
|
|
|
|
Date :
2009-03-07 20:05:43 |
By :
biolony |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|