共享一个php分页类
一个php的分页类,自我感觉相当不错,看源码就已经知道这款php的分页类有多么强大了,基本上涵盖了php分页的所有功能,里面的方法不少,值得新手朋友学习一下了,而在制作php应用中,php的分页技术也是不可缺少的,看看这款吧~
使用时需要先将其保存成为一个类文件,然后进行实例化调用方可使用。
PHP代码
[code lang="php"]
class Pageination
{
var $perPage; //当前页
var $perLimit; //当前每页显示条数
var $perPageLimit; //当前每页显示页数
var $totalNums; //当前分页中的总条数
var $totalPage; //当前分页中总页数
var $pageUrl; //定义当前网页路径
var $pageBaseUrl; //定义当前网页根路径
var $pageStart; //定义当前开始末ID
var $pageEnd; //定义当前结束ID
var $pageHeader; //定义显示头部分
var $pageBody; //定义显示主体部分
var $pageBottom; //定义显示尾部分
var $imgInfo; //定义当前分页时所需图标
var $pageStyle; //定义当前分页样式
var $pageInfo; //定认当前分页信息
var $pageAction; //定认当前分页点击执行回叫函数
var $htmlPage=""; //是否静态页分页
var $limitMaxPage; //最多分页数
//-------------定义分页构造函数----------------------------/
function Pageination(){
}
//-------------定义分页禄始化函数-------------------------/
function init($tn=0,$pl=10,$ppl=10,$htmlpage="",$limitMa
xPage=100){
if($htmlpage!=''){
$this->htmlPage="html";
}
$this->setPageBaseUrl($htmlpage);
$this->setPageUrl();
$this->totalNums=intval($tn);
$this->perLimit=intval($pl);
$this->perPageLimit=intval($ppl);
$this->imgInfo=array(
'per_on'=>'上一页',
'per_off'=>'上一页',
'next_on'=>'下一页',
'next_off'=>'下一页',
'first_on'=>'首页',
'first_off'=>'首页',
'last_on'=>'尾页',
'last_off'=>'尾页',
'permore_on'=>'前'.$this->perPageLimit.'页',
'permore_off'=>'前'.$this->perPageLimit.'页',
'nextmore_on'=>'后'.$this->perPageLimit.'页',
'nextmore_off'=>'后'.$this->perPageLimit.'页',
);
/*
$this->imgInfo=array(
'per_on'=>' < ',
'per_off'=>' < ',
'next_on'=>' > ',
'next_off'=>'> ',
'first_on'=>'|<',
'first_off'=>'|<',
'last_on'=>'>|',
'last_off'=>'>|',
'permore_on'=>'<<',
'permore_off'=>'<<',
'nextmore_on'=>'>>',
'nextmore_off'=>'>>',
);*/
$this->setTotalPage($limitMaxPage);
$this->setPerPage();
}
function setImgInfo($a=array()){
foreach($a as $k=>$v){
if($v!=''){
$this->imgInfo[$k]=$v;
}
}
}
function setPageBaseUrl($pbu){
$this->pageBaseUrl=$pbu;
}
//-------------定认取得当前网页路径函数-------------------------/
function setPageUrl()
{
if($this->htmlPage=="html"){
$this->pageUrl=$this->pageBaseUrl;
}
else{
$a='';
parse_str($_SERVER['QUERY_STRING'],$a);
$t=array();
foreach($a as $key=>$value)
{
if($key=='page'){
continue;
}else{
$t[$key].=$a[$key];
}
}
foreach($t as $key=>$value)
{
$b[]=$key.'='.urlencode($value);
}
$tmp_str=implode('&',$b);
$tmp_str && $tmp_str.='&';
$this->pageUrl=$this->pageBaseUrl.'?'.$tmp_str;
}
}
//-------------定义设置当前分页类中总页数函数-----------------------/
function setTotalPage($limitMaxPage){
$this->totalPage=ceil($this->totalNums/$this->perLimit);
$this->limitMaxPage=$this->totalPage;
if($limitMaxPage>0 && $limitMaxPage<$this->totalPage){
$this->limitMaxPage=$limitMaxPage;
}
}
//--------------定义设置当前分页类中当前页数-----------------------/
function setPerPage()
{
$this->perPage=intval(trim($_GET[page]));
if($this->perPage<=0){
$this->perPage=1;
}elseif($this->perPage>$this->limitMaxPage){
$this->perPage=$this->totalPage;
}
}
//-----------------定义取得当前步进动态分页信息函数-------------/
function setStepDynamicPageInfo()
{
if(($this->limitMaxPage-$this->perPage)<$this->perPageLimit){
$this->pageStart=$this->limitMaxPage-$this->perPageLimit+1;
}else{
$this->pageStart=$this->perPage;
}
if($this->pageStart<0)
$this->pageStart=1;
$this->pageEnd=$this->perPageLimit+$this->pageStart-1;
if($this->pageEnd>$this->limitMaxPage){
$this->pageEnd=$this->limitMaxPage;
}
}
//-----------------定义取得当前中间动态分页信息函数--------------------
function setMidDynamicPageInfo()
{
$add=floor($this->perPageLimit/2);
$this->pageStart=$this->perPage-$add+1;
if($this->pageStart<=0){
$this->pageStart=1;
}
$this->pageEnd=$this->perPageLimit+$this->pageStart-1;
if($this->pageEnd>$this->limitMaxPage){
$this->pageEnd=$this->limitMaxPage;
}
}
//------------定义取得当前静态分页信息函数--------------------------
function setStaticPageInfo()
{
$starts=$this->perPage/$this->perPageLimit;
if(is_int($starts)){
$starts=$starts-1;
}else{
$starts=floor($starts);
}
$this->pageStart=$starts*$this->perPageLimit+1;
$this->pageEnd=$this->pageStart+$this->perPageLimit-1;
if($this->pageEnd>$this->limitMaxPage){
$this->pageEnd=$this->limitMaxPage;
}
}
//-------------------定义显示分页头函数-------------------/
function setPageHeader(){
$this->pageHeader='第'.$this->perPage.'页/共'.$this->
totalPage.'页 共'.$this->totalNums.'条';
$this->pageHeader2="共".$this->totalPage
." 页/".$this->totalNums." 条 ";
}
//-------------------定义显示分页主体函数-------------------/
function setPageBody(){
$this->pageBody.='';
for($this->pageStart;$this->pageStart<=$this->pageEnd;$this->
pageStart++)
{
if($this->perPage==$this->pageStart){
$this->pageBody.='
"current page">'.$this->pageStart.'';
}elseif($this->htmlPage=="html"){
$pageurl=str_replace("(*)",$this->pageStart,$this->pageUrl);
$this->pageBody.=''.$this->pageStart.'';
}else{
$this->pageBody.=''.$this->pageStart.
'';
}
}
$this->pageBody.='';
}
//-------------------定义显示分页尾函数-------------------/
function setPageBottomInput(){
$tmp_str='';
if($this->htmlPage=="html"){
$pageurl="'".str_replace("(*)","'+document.getElementById('pageIn
put').value'",$this->pageUrl)."'";
}else{
$pageurl="'".$this->pageUrl."?page='+document.getElementById('pa
geInput').value;";
}
$tmp_str.='';
$this->pageBottom=$tmp_str;
}
//-------------------定义显示分页尾函数-------------------/
function setPageBottomSelect(){
$tmp_str='
";
$this->pageBottom=$tmp_str;
}
//-------------定义显示首页和尾页函数----------------------------/
function setFirstLast($m=true){
if($m){
if($this->perPage>1){
$per=1;
if($this->htmlPage=="html"){
$pageurlm=str_replace("(*)",$per,$this->pageUrl);
}else{
$pageurlm=$this->pageUrl.'page='.$per;
}
$this->pageBody.=''.$this-
>imgInfo['first_on'].'';
}else{
$this->pageBody.=''.$this->imgInfo['first_off'].'';
}
}else{
if($this->perPage<$this->limitMaxPage){
$next=$this->limitMaxPage;
if($this->htmlPage=="html"){
$pageurln=str_replace("(*)",$next,$this->pageUrl);
}else{
$pageurln=$this->pageUrl.'page='.$next;
}
$this->pageBody.=''.$this
->imgInfo['last_on'].'';
}else{
$this->pageBody.=''.$this->imgInfo['last_off'].'';
}
}
}
//-------------定义显示前一页和后一页函数----------------------------/
function setPerNext($m=true){
if($m){
if($this->perPage>1){
$per=$this->perPage-1;
if($this->htmlPage=="html"){
$pageurlm=str_replace("(*)",$per,$this->pageUrl);
}else{
$pageurlm=$this->pageUrl.'page='.$per;
}
$this->pageBody.=''.$this
->imgInfo['per_on'].'';
}else{
$this->pageBody.='
'.$this->imgInfo['per_off'].'';
}
}else{
if($this->perPage<$this->limitMaxPage){
$next=$this->perPage+1;
if($this->htmlPage=="html"){
$pageurln=str_replace("(*)",$next,$this->pageUrl);
}else{
$pageurln=$this->pageUrl.'page='.$next;
}
$this->pageBody.='
'.$this->imgInfo['next_on'].'';
}else{
$this->pageBody.=''.$this->imgInfo['next_off'].'';
}
}
}
//-------------定义显示前几页和后几页函数----------------/
function setPerNextMore($m=true){
if($m){
if($this->perPage>$this->perPageLimit){
$perMore=$this->pageStart-1;
if($this->htmlPage=="html"){
$pageurln=str_replace("(*)",$perMore,$this->pageUrl);
}else{
$pageurln=$this->pageUrl.'page='.$perMore;
}
$this->pageBody.=''.$this->imgInfo['permore_on'].'';
}else{
$this->pageBody.=''.$this->imgInfo['permore_off'].'';
}
}else{
if($this->pageEnd<$this->limitMaxPage){
$nextMore=$this->pageEnd+1;
if($this->htmlPage=="html"){
$pageurln=str_replace("(*)",$nextMore,$this->pageUrl);
}else{
$pageurln=$this->pageUrl.'page='.$nextMore;
}
$this->pageBody.=''.$this->imgInfo['nextmore_on'].'';
}else{
$this->pageBody.=''.$this->imgInfo['nextmore_on'].'';
}
}
}
//-------------定义显示上一页和下一页函数-----------------------/
function getPerNext($m=true){
$this->pageBody='';
if($m){
$this->setFirstLast($m);
}
$this->setPerNext($m);
$this->setPerNext(false);
if($m){
$this->setFirstLast(false);
}
return '
';
}
//-------------定义前台调用显示完整信息函数-------------------/
function displayPageInfo($t='static',$f=""){
if($this->totalNums==0){
return;
}
$t=$t==''?'static':$t;
$this->pageBody='';
switch($t){
case 'static':
$this->setStaticPageInfo();
break;
case 'dynamic':
$this->setStepDynamicPageInfo();
break;
case 'middynamic':
$this->setMidDynamicPageInfo();
break;
default:
$this->setStaticPageInfo();
}
$this->setPageHeader();
$this->setFirstLast(true);
if($t!='dynamic'){
$this->setPerNextMore();
}
$this->setPerNext(true);
$this->setPageBody();
$this->setPerNext(false);
if($t!='dynamic'){
$this->setPerNextMore(false);
}
$this->setFirstLast(false);
if($f=='select'){
$this->setPageBottomSelect();
}else if($f=='input'){
$this->setPageBottomInput();
}
$this->pageInfo=$this->pageHeader2.$this->pageBody.$this-
>pageBottom;
return '
';
}
//-------------定义前台调用仅显示头尾函数----------------------/
function displayPageInfoNoBody($f='select'){
if($this->totalNums==0){
return;
}
$this->pageBody='';
$this->setPageHeader();
$this->setFirstLast();
$this->setPerNext();
$this->setPerNext(false);
$this->setFirstLast(false);
if($f=='select'){
$this->setPageBottomSelect();
}else{
$this->setPageBottomInput();
}
$this->pageInfo=$this->pageHeader.$this->pageBody.$this->
pageBottom;
return '
';
}
}
[/code]