本文目錄一覽:
- 1、php 分頁算法
- 2、求php數字分頁算法
- 3、php 分頁設置
php 分頁算法
這是我以前用的分頁,你看看吧,希望能幫到你。
html
head
title分頁/title
/head
body
table align=”center” border=”1″ width=”500″
tr
td編號/td
td用戶名/td
td密碼/td
td郵箱/td
/tr
?php
$conn=mysql_connect(“localhost”,”root”,””);
mysql_set_charset(“utf8”,$conn);
$db = mysql_select_db(“bbs”,$conn);
$rs = mysql_query(“select * from userInfo”);
$totalRow = mysql_num_rows($rs);//總記錄數
$currentPage = $_GET[“currentPage”];//當前頁
if($currentPage == null){
$currentPage = 1;
}
$pageSize = 3;//每頁顯示的記錄數
$first = ($currentPage-1)*$pageSize;//起始值
$last = $first + $pageSize;//結束值
$totalPage = ceil($totalRow / $pageSize);//總頁數
if($last $totalRow)
{
$last = $totalRow;
}
for($i=$first;$i$last;$i++)
{
mysql_data_seek($rs,$i);//定位游標
$row = mysql_fetch_array($rs);
echo “tr”;
echo ” td{$row[0]}/td”;
echo ” td{$row[1]}/td”;
echo ” td{$row[2]}/td”;
echo ” td{$row[3]}/td”;
echo “/tr”;
}
mysql_free_result($rs);
mysql_close($conn);
?
tr
td colspan=”4″ align=”center”
?php
if($currentPage == 1)
{
echo “首頁 上一頁”;
}
else
{
?
a href=”fenye.php?currentPage=1″首頁/a
a href=”fenye.php?currentPage=?php echo $currentPage-1 ?”上一頁/a
?php
}
if($currentPage == $totalPage)
{
echo ” 下一頁 尾頁”;
}
else
{
?
a href=”fenye.php?currentPage=?php echo $currentPage+1 ?”下一頁/a
a href=”fenye.php?currentPage=?php echo $totalPage ?”尾頁/a
?php
}
?
td
/tr
/table
/body
/html
求php數字分頁算法
假設。
你只需要顯示當前頁數的前3頁和後3頁。
吶么只有3種可能。
第一個可能,用戶當前點擊的頁數未超過前3頁。需要顯示前7頁(前三頁和後三頁以及當前點擊的頁)省略7頁後面的頁。
第二個可能,用戶點擊的頁數以超過前三頁可是未到尾三頁。那麼就要省略當前頁數的前三頁後三頁之外的所有頁碼。
第三個可能,用戶點擊的頁數以超過尾三頁。那麼就省略最後7頁外的所有頁碼。
這是我寫的分頁碼中算省略頁碼的代碼。
$fornum = 10; //先聲明你要顯示的是幾個頁。
if($totalpage $fornum) //判斷當前的所有頁數是否超過你要顯示的頁。如果沒超過。那就不用費事直接顯示所有頁碼就行叻。 如果超過進入循環。
{
//第一種可能。我這個是只顯示10個頁碼。
if($page=6) //如果當前的頁碼大於等於6.也就是前面的頁碼不用省略。直接省略10個頁碼之後的頁就OK叻。
{
for($i=1; $i = $fornum; $i++)//這就是循環顯示數字頁碼
{
if($page == $i ){
echo ‘a href=”javascript:;” class=”on”‘.$i.’/a’;
}
else{
echo ‘a href=”‘.$_SERVER[‘PHP_SELF’].’?page=’.$i.'” class=”num”‘.$i.’/a’;
}
}
echo ‘a href=”‘.$_SERVER[‘PHP_SELF’].’?page=’.$totalpage.'” class=”num”…’.$totalpage.’/a’;
}
//注意阿。這不是第二個可能。這是第三個可能。因為第一個和第三個好判斷。而兩個都不滿足吶就是第二個可能叻。所以第二個不用判斷。這個條件也很好解釋。總的頁數減去當前頁數小於等於5的話。那麼就省略最後10頁以外的頁碼。
elseif(($totalpage-$page) = 5)
{
echo ‘a href=”‘.$_SERVER[‘PHP_SELF’].’?page=1″ class=”num”1…/a’;
for($i=$totalpage – ($fornum -1); $i = $totalpage; $i++)//依舊是循環顯示數字頁碼
{
if($page == $i ){
echo ‘a href=”javascript:;” class=”on”‘.$i.’/a’;
}
else{
echo ‘a href=”‘.$_SERVER[‘PHP_SELF’].’?page=’.$i.'” class=”num”‘.$i.’/a’;
}
}
}
//這就是第二個可能叻。第一和第三的條件都不滿足那麼只有前沒到頭後沒着尾的情況叻。所以不用判斷直接顯示當前頁數的前幾頁和後幾頁。頭尾都省略。
else
{
echo ‘a href=”‘.$_SERVER[‘PHP_SELF’].’?page=1″ class=”num”1…/a’;
for($i=$page – 4; $i $page + 5; $i++)//循環顯示數字頁碼
{
if($page == $i ){
echo ‘a href=”javascript:;” class=”on”‘.$i.’/a’;
}
else{
echo ‘a href=”‘.$_SERVER[‘PHP_SELF’].’?page=’.$i.'” class=”num”‘.$i.’/a’;
}
}
echo ‘a href=”‘.$_SERVER[‘PHP_SELF’].’?page=’.$totalpage.'” class=”num”…’.$totalpage.’/a’;
}
}
//這是最上面的那個if的,如果總頁碼沒超過你要顯示的頁碼就直接顯示所有的頁碼~
else
{
for($i=1; $i = $totalpage; $i++)//仍是循環顯示數字頁碼
{
if($page == $i ){
echo ‘a href=”javascript:;” class=”on”‘.$i.’/a’;
}
else{
echo ‘a href=”‘.$_SERVER[‘PHP_SELF’].’?page=’.$i.'” class=”num”‘.$i.’/a’;
}
}
}
然後就木有叻。首頁尾頁上頁下頁的代碼我就不粘叻。 關於顯示固定頁碼的代碼就是這些。希望你能看懂。打的我手都酸了。。。
php 分頁設置
if($offset) //如果偏移量是0,則沒有上一頁的鏈接
{
$preoffset=$offset-10;
print(“a href=\”$PHP_SELF?offset=$preoffset\”上一頁/a \n”);
//從這裡知道$offset是每次查詢數據庫記錄時的第一條記錄(相對總共10條記錄而言)
}
//計算總共需要的頁數
$page_cnt=ceil($num/10);
//顯示到所有頁的鏈接
for ($i=1; $i=$page_cnt; $i++)
{
$page_offset=10*$i-10;
print(“a href=\”$PHP_SELF?offset=$page_offset\”$i/a \n”);
}
//檢查是否是最後一頁
if ($page_cnt!=0 (($offset+10)/10)!=$page_cnt)
{
$backoffset=$offset+10;
print(“a href=\”$PHP_SELF?offset=$backoffset\”下一頁/a \n”);
}
//頁碼顯示
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/242733.html