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生成自己的LOG文件
Oct 09 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Apr 07 PHP
关于php mvc开发模式的感想
Jun 28 PHP
PHP数组无限分级数据的层级化处理代码
Dec 29 PHP
小谈php正则提取图片地址
Mar 27 PHP
php实现的九九乘法口诀表简洁版
Jul 28 PHP
PHP基于单例模式编写PDO类的方法
Sep 13 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
May 12 PHP
浅谈PHP各环境下的伪静态配置
Mar 13 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
Jun 12 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
May 02 PHP
你真的了解PHP中的引用符号(&)吗
May 12 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中使用sockets:从新闻组中获取文章
2006/10/09 PHP
php 中include()与require()的对比
2006/10/09 PHP
php比较两个绝对时间的大小
2014/01/31 PHP
PHP sleep()函数, usleep()函数
2016/08/25 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
JavaScript 继承详解(一)
2009/07/13 Javascript
js调用图片隐藏&amp;显示实现代码
2013/09/13 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
使用jQuery将多条数据插入模态框的实现代码
2014/10/08 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
浅析从vue源码看观察者模式
2018/01/29 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
JavaScript组合模式---引入案例分析
2020/05/23 Javascript
vue 实现一个简单的全局调用弹窗案例
2020/09/10 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
2020/11/02 Javascript
python备份文件的脚本
2008/08/11 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
Steve Madden官网:美国鞋类品牌
2017/01/29 全球购物
英文导游欢迎词
2014/01/11 职场文书
大型车展策划方案
2014/02/01 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
团结主题班会
2015/08/13 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis