|
|
|
PHP MySQL List Record Paging/Pagination รบกวนพี่ๆตอบหน่อยครับผม มึนมาก |
|
|
|
|
|
|
|
คุณจะต้องส่งค่าไปหน้าอื่น ๆ ด้วยครับ มันจะต้อง Query ใหม่ทุกอย่างครับ
|
|
|
|
|
Date :
2011-05-13 16:56:51 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เขียนให้เลยแล้วกันครับ
Code (PHP)
<?php
$Derpt = $_GET["Derptcode"]; //รับค่ามาจากหน้าที่แล้ว
$sql = "SELECT * FROM ssru_news Where news_derpt=".$Derpt ." ";
/* ตั้งค่า แสดงผลต่อหน้า $Per_Page */
$Per_Page =5;
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 "<center><b>จำนวน $Page มากกว่า $Num_Pages ยังไม่มีข้อความ<b></center>";
$sql.=" Order by newscode Desc LIMIT $Page_start , $Per_Page";
$result = mysql_query($sql);
While($dbarr= mysql_fetch_array($result)){
?>
<? echo $dbarr["....."]; ?> //ส่วนแสดงผลข้อความที่รูป
<? } ?>
<?php /* สร้างปุ่มย้อนกลับ */
if($Prev_Page)
echo " <a href='$PHP_SELF?Page=$Prev_Page&Derpt=$Derpt' class='mynavigi'>กลับ</a>";
for($i=1; $i<$Num_Pages; $i++)
{
if($i != $Page)
echo " <a href='$PHP_SELF?Page=$i&Derpt=$Derpt' class='mynavi'>$i</a> ";
else
echo " <a href='#' class='mynavi''>$i</a> ";
}
/*สร้างปุ่มเดินหน้า */
if($Page!=$Num_Pages)
echo "<a href ='$PHP_SELF?Page=$Next_Page&Derpt=$Derpt' class='mynavigi'>ถัดไป</a>";
?>
|
|
|
|
|
Date :
2011-05-13 17:01:26 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณคร๊าฟพี่ วิน
|
|
|
|
|
Date :
2011-05-13 17:06:11 |
By :
coolkidz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
]พี่ิวินค่ะ รบกวนดูให้หน่อยได้ไหมค่ะ ทำมาหลายวันแล้วไม่ได้สักที
เป็นกรณีเดียวกันกับคุณ coolkidz เลยอ่าค่ะ
Code (PHP)
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
<body bgcolor="#D9D3CF">
<form name="frmSearch" method="get" action="<?=$_SERVER['SCRIPT_NAME'];?>">
<table width="870" border="0" cellspacing="0" cellpadding="0">
<tr>
<th width="194" scope="col"> </th>
<th width="629" scope="col"><table width="1312" border="0">
<tr>
<th width="1306" align="center"><table width="1294" height="33" border="0" cellpadding="0" cellspacing="0">
<tr>
<th width="197" height="33" scope="col"><input type="button" value="Back to home page" onClick="window.location='backtohome.php' "></th>
<th width="1015" scope="col">Keyword
<input name="txtKeyword" type="text" id="txtKeyword" value="<?=$_GET["txtKeyword"];?>" />
<input width="230" height="30" type="submit" value="Search" /></th>
<th width="82" scope="col"> </th>
</tr>
</table> <p> </p></th>
</tr>
</table>
</form>
<style type="text/css">
<!--
.paginate {
border:0; margin:0; padding:0;
font-family: Arial, Helvetica, sans-serif;
font-size: 11px;
}
a.paginate {
border: 1px solid #333;
padding: 2px 6px 2px 6px;
text-decoration: none;
color: #333;
}
h2 {
font-size: 12pt;
color: #003366;
}
h2 {
line-height: 1.2em;
letter-spacing:-1px;
margin: 0;
padding: 0;
text-align: left;
}
a.paginate:hover {
border:solid 1px #666666;
color: #36F;
}
a.current {
border: 1px solid #666666 ;
font: bold .7em Arial,Helvetica,sans-serif;
padding: 2px 6px 2px 6px;
cursor: default;
color: #ff0084;
text-decoration: none;
}
span.inactive {
border: 1px solid #999;
font-family: Arial, Helvetica, sans-serif;
font-size: .7em;
padding: 2px 6px 2px 6px;
color: #999;
cursor: default;
}
-->
</style>
<?
class Paginator{
var $items_per_page;
var $items_total;
var $current_page;
var $num_pages;
var $mid_range;
var $low;
var $high;
var $limit;
var $return;
var $default_ipp;
var $querystring;
var $url_next;
function Paginator()
{
$this->current_page = 1;
$this->mid_range = 7;
$this->items_per_page = $this->default_ipp;
$this->url_next = $this->url_next;
}
function paginate()
{
if(!is_numeric($this->items_per_page) OR $this->items_per_page <= 0) $this->items_per_page = $this->default_ipp;
$this->num_pages = ceil($this->items_total/$this->items_per_page);
if($this->current_page < 1 Or !is_numeric($this->current_page)) $this->current_page = 1;
if($this->current_page > $this->num_pages) $this->current_page = $this->num_pages;
$prev_page = $this->current_page-1;
$next_page = $this->current_page+1;
if($this->num_pages > 10)
{
$this->return = ($this->current_page != 1 And $this->items_total >= 10) ? "<a class=\"paginate\" href=\"".$this->url_next.$this->$prev_page."\">« Previous</a> ":"<span class=\"inactive\" href=\"#\">« Previous</span> ";
$this->start_range = $this->current_page - floor($this->mid_range/2);
$this->end_range = $this->current_page + floor($this->mid_range/2);
if($this->start_range <= 0)
{
$this->end_range += abs($this->start_range)+1;
$this->start_range = 1;
}
if($this->end_range > $this->num_pages)
{
$this->start_range -= $this->end_range-$this->num_pages;
$this->end_range = $this->num_pages;
}
$this->range = range($this->start_range,$this->end_range);
for($i=1;$i<=$this->num_pages;$i++)
{
if($this->range[0] > 2 And $i == $this->range[0]) $this->return .= " ... ";
if($i==1 Or $i==$this->num_pages Or in_array($i,$this->range))
{
$this->return .= ($i == $this->current_page And $_GET['Page'] != 'All') ? "<a title=\"Go to page $i of $this->num_pages\" class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" title=\"Go to page $i of $this->num_pages\" href=\"".$this->url_next.$i."\">$i</a> ";
}
if($this->range[$this->mid_range-1] < $this->num_pages-1 And $i == $this->range[$this->mid_range-1]) $this->return .= " ... ";
}
$this->return .= (($this->current_page != $this->num_pages And $this->items_total >= 10) And ($_GET['Page'] != 'All')) ? "<a class=\"paginate\" href=\"".$this->url_next.$next_page."\">Next »</a>\n":"<span class=\"inactive\" href=\"#\">» Next</span>\n";
}
else
{
for($i=1;$i<=$this->num_pages;$i++)
{
$this->return .= ($i == $this->current_page) ? "<a class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" href=\"".$this->url_next.$i."\">$i</a> ";
}
}
$this->low = ($this->current_page-1) * $this->items_per_page;
$this->high = ($_GET['ipp'] == 'All') ? $this->items_total:($this->current_page * $this->items_per_page)-1;
$this->limit = ($_GET['ipp'] == 'All') ? "":" LIMIT $this->low,$this->items_per_page";
}
function display_pages()
{
return $this->return;
}
}
?>
<?
if($_GET["txtKeyword"] != "")
{
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("db_member");
$strSQL = "SELECT * FROM member2 WHERE (member_name LIKE '%".$_GET["txtKeyword"]."%' or fname LIKE '%".$_GET["txtKeyword"]."%' )";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$Num_Rows = mysql_num_rows($objQuery);
$Per_Page = 50; // 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;
}
$strSQL .="order by member_name ASC LIMIT $Page_Start,$Per_Page";
$objQuery = mysql_query($strSQL);
?>
<table align="center" width="873" height="198" border="1" cellpadding="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
<tr>
<th align="center" width="201" scope="col">Member name</th>
<th width="205" scope="col">First name</th>
<th width="222" scope="col">Last Name </th>
</tr>
<?
while($objResult = mysql_fetch_array($objQuery))
{
?>
<tr>
<td><div align="center"><?=$objResult["member_name"];?> </div></td>
<td><div align="center"><?=$objResult["fname"];?></div></td>
<td><div align="center"><?=$objResult["lname"];?></div></td>
</tr> <?
}
?>
<tr>
</tr>
<tr>
</tr>
<p>
</table>
</p>
<table width="717" border="0" cellspacing="0" cellpadding="0">
</table>
<table width="1295" border="0" cellspacing="0" cellpadding="0">
<tr>
<th width="482" scope="col"> </th>
<th align="left" width="116" scope="col">Total
<?=$Num_Rows; ?></th>
<th width="112" align="left" scope="col"197>Record :
<?=$Num_Pages;?></th>
<th align="left" width="572" scope="col"> </th>
<th width="13" scope="col"> </th>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<table width="1117" border="0" cellspacing="0" cellpadding="0">
<tr>
<th scope="col">Page:
<?
$pages = new Paginator;
$pages->items_total = $Num_Rows;
$pages->mid_range = 10;
$pages->current_page = $Page;
$pages->default_ipp = $Per_Page;
$pages->url_next = $_SERVER["PHP_SELF"]."?QueryString=value&Page=";
$pages->paginate();
echo $pages->display_pages();
?></th>
</tr>
</table>
<p> </p>
<?
}
?>
|
|
|
|
|
Date :
2011-05-25 00:58:39 |
By :
Tomtam |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
$strSQL .="order by member_name ASC LIMIT $Page_Start,$Per_Page";
echo $strSQL;
ลองดูว่าได้ค่าอะไรครับ
|
|
|
|
|
Date :
2011-05-25 06:12:13 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองแล้วค่ะ ยังไม่ได้เหมือนเดิม อะค่ะ
พอกดหน้าต่อไปแล้วยังไม่ขึ้นอะค่ะ T,.T
|
|
|
|
|
Date :
2011-05-25 10:26:28 |
By :
Tomtam |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|