php页码形式分页函数支持静态化地址及ajax分页


Posted in PHP onMarch 28, 2014

之前每次遇到分页,总是得自己写,觉得挺繁琐的,所以本着通用的原则,写了一个分页的方法,特此记录。

目前此分页支持静态化地址分页和无链接地址时的ajax分页(但是js得自己写):

支持的静态地址如下:www.example.com/xxx-xxx-p1-xxxx-xx.html

其他形式静态化需根据自己情况进行改写

支持ajax方式分页时,$link参数为空,但提供了pid和optype,其中pid用于获取该页码页数,optype用于一个页面存在多个分页时区分当前触发动作属于哪个分页逻辑

/********************************************************** 
* 
* 获取页码 
* 
********************************************************** 
* 
* @params string $link 链接地址(链接为空时可以用ajax翻页) 
* 
* @params int $intPage 当前页数 
* 
* @params int $intTotal 总页数 
* 
* @params int $intSize 要显示的页数个数 
* 
* @params string $type 链接种类(多个翻页用于区分翻页区域) 
* 
********************************************************** 
* 
* @return array 
*/ 
private function formatPage($link="",$intPage,$intTotal,$intSize=3,$type="") 
{ 
$strPage = '<div class="g_serpage clearfix">'; 
if($intTotal > 0) 
{ 
if($intPage > 1) 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p".($intPage-1),$link).'"><<上一页</a>':'<a optype="'.$type.'" pid="showpage_'.($intPage-1).'" href="javascript:void(0)"><<上一页</a>'; 
else 
$strPage .= '<a href="javascript:void(0)"><<上一页</a>'; 
//窗口宽度大于等于总页数 
if( ($intSize+2) >= $intTotal ) 
{ 
for($i=1;$i<=$intTotal;$i++) 
{ 
$strClass = $i == $intPage ? 'class="g_serpagcur"' : ""; 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p".$i,$link).'" '.$strClass.'>'.$i.'</a>':'<a optype="'.$type.'" pid="showpage_'.$i.'" href="javascript:void(0)" '.$strClass.'>'.$i.'</a>'; 
} 
} 
else 
{ 
if($intPage < ceil($intSize/2)) 
{ 
for($i=1;$i<=$intSize;$i++) 
{ 
$strClass = $i == $intPage ? 'class="g_serpagcur"' : ""; 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p".$i,$link).'" '.$strClass.'>'.$i.'</a>':'<a optype="'.$type.'" pid="showpage_'.$i.'" href="javascript:void(0)" '.$strClass.'>'.$i.'</a>'; 
} 
$strPage .= $link!=''?'<a class="gpage_nobor" >…</a><a href="'.preg_replace("/-p(\d+)/","p".$intTotal,$link).'" >'.$intTotal.'</a>':'<a class="gpage_nobor" >…</a><a optype="'.$type.'" pid="showpage_'.$intTotal.'" href="javascript:void(0)" >'.$intTotal.'</a>'; 
} 
elseif(($intTotal-$intPage) < ceil($intSize/2)) 
{ 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p1",$link).'">1</a><a class="gpage_nobor" >…</a>':'<a optype="'.$type.'" pid="showpage_1" href="javascript:void(0)">1</a><a class="gpage_nobor" >…</a>'; 
for($i = ($intTotal + 1 - $intSize);$i++;$i<=$intTotal) 
{ 
$strClass = $i == $intPage ? 'class="g_serpagcur"' : ""; 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p".$i,$link).'" '.$strClass.'>'.$i.'</a>':'<a optype="'.$type.'" pid="showpage_'.$i.'" href="javascript:void(0)" '.$strClass.'>'.$i.'</a>'; 
} 
} 
else 
{ 
$intOffset = floor($intSize/2); 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p1",$link).'">1</a>':'<a optype="'.$type.'" pid="showpage_1" href="javascript:void(0)">1</a>'; 
if( ($intPage - $intOffset) > 2) 
{ 
$strPage .= '<a class="gpage_nobor" >…</a>'; 
} 
for($i=(($intPage - $intOffset)<=1?2:($intPage - $intOffset));$i<=(($intPage + $intOffset)>=$intTotal?($intTotal-1):($intPage + $intOffset));$i++) 
{ 
$strClass = $i == $intPage ? 'class="g_serpagcur"' : ""; 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p".$i,$link).'" '.$strClass.'>'.$i.'</a>':'<a optype="'.$type.'" pid="showpage_'.$i.'" href="javascript:void(0)" '.$strClass.'>'.$i.'</a>'; 
} 
if( ($intPage - $intOffset) < ($intTotal - 1)) 
{ 
$strPage .= '<a class="gpage_nobor" >…</a>'; 
} 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p".$intTotal,$link).'">'.$intTotal.'</a>':'<a optype="'.$type.'" pid="showpage_'.$intTotal.'" href="javascript:void(0)">'.$intTotal.'</a>'; 
} 
} 
if($intPage < $intTotal) 
{ 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p".($intPage+1),$link).'">下一页>></a>':'<a optype="'.$type.'" pid="showpage_'.($intPage+1).'" href="javascript:void(0)">下一页>></a>'; 
} 
else 
{ 
$strPage .= '<a href="javascript:void(0)">下一页>></a>'; 
} 
} 
$strPage .= "</div>"; 
return $strPage; 
}
PHP 相关文章推荐
通过缓存数据库结果提高PHP性能的原理介绍
Sep 05 PHP
php中url函数介绍及使用示例
Feb 13 PHP
php随机显示图片的简单示例
Feb 15 PHP
PHP同时连接多个mysql数据库示例代码
Mar 17 PHP
PHP实现的sqlite数据库连接类
Dec 12 PHP
php导入excel文件到mysql数据库的方法
Jan 14 PHP
Yii2.0中的COOKIE和SESSION用法
Aug 12 PHP
php+Memcached实现简单留言板功能示例
Feb 15 PHP
YII框架批量插入数据的方法
Mar 18 PHP
Laravel实现定时任务的示例代码
Aug 10 PHP
PHP环形链表实现方法示例
Sep 15 PHP
PHP实现简单日历类编写
Aug 28 PHP
小谈php正则提取图片地址
Mar 27 #PHP
php顺序查找和二分查找示例
Mar 27 #PHP
php求两个目录的相对路径示例(php获取相对路径)
Mar 27 #PHP
php环境套包 dedeampz 伪静态设置示例
Mar 26 #PHP
php去除换行(回车换行)的三种方法
Mar 26 #PHP
php的memcache类分享(memcache队列)
Mar 26 #PHP
codeigniter自带数据库类使用方法说明
Mar 25 #PHP
You might like
PHP防注入安全代码
2008/04/09 PHP
php ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
PHP仿微信发红包领红包效果
2016/10/30 PHP
CodeIgniter整合Smarty的方法详解
2017/08/25 PHP
破除一些网站复制、右键限制
2006/11/04 Javascript
js实现上传图片之上传前预览图片
2013/03/25 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
详解JavaScript中this的指向问题
2017/01/20 Javascript
老生常谈js数据类型
2017/08/03 Javascript
基于require.js的使用(实例讲解)
2017/09/07 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
2017/10/25 Javascript
关于vue面试题汇总
2018/03/20 Javascript
JavaScript 下载svg图片为png格式
2018/06/21 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
Python迭代和迭代器详解
2016/11/10 Python
Python+Wordpress制作小说站
2017/04/14 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
python面向对象 反射原理解析
2019/08/12 Python
Python datetime包函数简单介绍
2019/08/28 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
大学生职业生涯规划书汇总
2014/03/20 职场文书
领导干部廉政承诺书
2014/03/27 职场文书
优质服务活动实施方案
2014/05/02 职场文书
企业承诺书格式
2014/05/21 职场文书
美化环境标语
2014/06/20 职场文书
北京英语导游词
2015/02/12 职场文书
初中英语教学反思范文
2016/02/15 职场文书
小学一年级数学教学反思
2016/02/16 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python