php自動(dòng)適應(yīng)范圍的分頁(yè)代碼
更新時(shí)間:2008年08月05日 17:47:06 作者:
分享一個(gè)自己寫的“頁(yè)碼自動(dòng)適應(yīng)范圍”的分頁(yè)代碼
復(fù)制代碼 代碼如下:
<?php
function page($page,$total,$phpfile,$pagesize=10,$pagelen=7){
$pagecode = '';//定義變量,存放分頁(yè)生成的HTML
$page = intval($page);//避免非數(shù)字頁(yè)碼
$total = intval($total);//保證總記錄數(shù)值類型正確
if(!$total) return array();//總記錄數(shù)為零返回空數(shù)組
$pages = ceil($total/$pagesize);//計(jì)算總分頁(yè)
//處理頁(yè)碼合法性
if($page<1) $page = 1;
if($page>$pages) $page = $pages;
//計(jì)算查詢偏移量
$offset = $pagesize*($page-1);
//頁(yè)碼范圍計(jì)算
$init = 1;//起始頁(yè)碼數(shù)
$max = $pages;//結(jié)束頁(yè)碼數(shù)
$pagelen = ($pagelen%2)?$pagelen:$pagelen+1;//頁(yè)碼個(gè)數(shù)
$pageoffset = ($pagelen-1)/2;//頁(yè)碼個(gè)數(shù)左右偏移量
//生成html
$pagecode='<div class="page">';
$pagecode.="<span>$page/$pages</span>";//第幾頁(yè),共幾頁(yè)
//如果是第一頁(yè),則不顯示第一頁(yè)和上一頁(yè)的連接
if($page!=1){
$pagecode.="<a href=\"{$phpfile}?page=1\"><<</a>";//第一頁(yè)
$pagecode.="<a href=\"{$phpfile}?page=".($page-1)."\"><</a>";//上一頁(yè)
}
//分頁(yè)數(shù)大于頁(yè)碼個(gè)數(shù)時(shí)可以偏移
if($pages>$pagelen){
//如果當(dāng)前頁(yè)小于等于左偏移
if($page<=$pageoffset){
$init=1;
$max = $pagelen;
}else{//如果當(dāng)前頁(yè)大于左偏移
//如果當(dāng)前頁(yè)碼右偏移超出最大分頁(yè)數(shù)
if($page+$pageoffset>=$pages+1){
$init = $pages-$pagelen+1;
}else{
//左右偏移都存在時(shí)的計(jì)算
$init = $page-$pageoffset;
$max = $page+$pageoffset;
}
}
}
//生成html
for($i=$init;$i<=$max;$i++){
if($i==$page){
$pagecode.='<span>'.$i.'</span>';
} else {
$pagecode.="<a href=\"{$phpfile}?page={$i}\">$i</a>";
}
}
if($page!=$pages){
$pagecode.="<a href=\"{$phpfile}?page=".($page+1)."\">></a>";//下一頁(yè)
$pagecode.="<a href=\"{$phpfile}?page={$pages}\">>></a>";//最后一頁(yè)
}
$pagecode.="<input type=\"text\" size=\"3\" onkeydown=\"if(event.keyCode==13) {window.location.href='{$phpfile}?page='+this.value; return false;}\" /></div>";
return array('pagecode'=>$pagecode,'sqllimit'=>' limit '.$offset.','.$pagesize);
}
?>
加了頁(yè)碼跳轉(zhuǎn)文本框
以下是新手使用說(shuō)明
復(fù)制代碼 代碼如下:
<?php
$phpfile = 'index.php';//頁(yè)面文件名
$page= isset($_GET['page'])?$_GET['page']:1;//默認(rèn)頁(yè)碼
$db = mysql_connect('localhost','test','test');//鏈接數(shù)據(jù)庫(kù)
mysql_select_db('test',$db);//選擇數(shù)據(jù)庫(kù)
$counts = mysql_num_rows(mysql_query('select `id` from `test`',$db));//獲取需要的數(shù)據(jù)總條數(shù)
$sql='select `id`,`title` from `test`';//定義查詢語(yǔ)句SQL
$getpageinfo = page($page,$counts,$phpfile);//調(diào)用函數(shù),生成分頁(yè)HTML 和 SQL LIMIT 子句
$sql.=$getpageinfo['sqllimit'];//組合完整的SQL語(yǔ)句
$data = $row = array();//初始化數(shù)組
$result = mysql_query($sql,$db);//獲取結(jié)果集
//將數(shù)據(jù)裝入$data數(shù)組
while($row = mysql_fetch_array($result)){
$data[]=$row;
}
?>
<?php
echo $getpageinfo['pagecode'];//顯示分頁(yè)的html代碼
?>
======================
補(bǔ)貼css
復(fù)制代碼 代碼如下:
<style type="text/css">
body{font-family:Tahoma;}
.page{padding:2px;font-weight:bolder;font-size:12px;}
.page a{border:1px solid #ccc;padding:0 5px 0 5px;margin:2px;text-decoration:none;color:#333;}
.page span{padding:0 5px 0 5px;margin:2px;background:#09f;color:#fff;border:1px solid #09c;}
</style>
相關(guān)文章
Nginx+ThinkPHP+Vue解決跨域問(wèn)題的方法詳解
這篇文章主要為大家詳細(xì)介紹了Nginx+ThinkPHP+Vue解決跨域問(wèn)題的方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下2024-04-04
php根據(jù)一個(gè)給定范圍和步進(jìn)生成數(shù)組的方法
這篇文章主要介紹了php根據(jù)一個(gè)給定范圍和步進(jìn)生成數(shù)組的方法,涉及php針對(duì)數(shù)組的遍歷技巧,需要的朋友可以參考下2015-06-06
用PHP讀取flv文件的播放時(shí)間長(zhǎng)度
用PHP讀取flv文件的播放時(shí)間長(zhǎng)度的代碼,需要用的朋友可以參考下。2009-09-09
php面向?qū)ο笾衧tatic靜態(tài)屬性與方法的內(nèi)存位置分析
這篇文章主要介紹了php面向?qū)ο笾衧tatic靜態(tài)屬性與方法的內(nèi)存位置,通過(guò)內(nèi)存位置實(shí)例分析了static靜態(tài)屬性的原理與使用技巧,需要的朋友可以參考下
2015-02-02
PHP實(shí)現(xiàn)時(shí)間比較和時(shí)間差計(jì)算的方法示例
這篇文章主要介紹了PHP實(shí)現(xiàn)時(shí)間比較和時(shí)間差計(jì)算的方法,涉及php日期與時(shí)間的轉(zhuǎn)換、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下
2017-07-07
PHP中file_exists使用中遇到的問(wèn)題小結(jié)
本文給大家詳細(xì)描述了作者在使用file_exists中遇到的問(wèn)題以及分析解決方法的過(guò)程,非常的詳細(xì),有需要的小伙伴可以參考下。
2016-04-04 
