分页函数分享
来源:互联网 发布:linux close 编辑:程序博客网 时间:2024/05/16 09:30
原先TP 3.2框架中的Page类是蛮好用的,但是最近有一个比较坑的地方就是我没有办法获取全部满足条件的记录数,但是又需要分页的效果,没有办法,只好自己写了下面这个类,还需要完善,但是基本测试是没有问题的:
<?php/** * Created by PhpStorm. * User: root * Date: 17-8-10 * Time: 上午11:08 */namespace Vendor\GetPage;class GetPage{ const FRONT_HREF_NUMBER=2; const BACK_HREF_NUMBER=2; const FIRST_PAGE_NAME="首页"; const LAST_PAGE_NAME="尾页"; const FRONT_PAGE_NAME="上一页"; const BACK_PAGE_NAME="下一页";// const CURRENT_PAGE_NAME=""; private $page_size; public function __construct($page_size) { $this->page_size=$page_size; } /** * 根据传入值计算出超链接数量 * * @param $baseUrl string * @param $dataInfoCount int|string * @param $p int|string * @return string */ public function show($baseUrl,$dataInfoCount,$p){ $p=intval($p); $dataInfoCount=intval($dataInfoCount); $href=$this->getRange($dataInfoCount,$p); $show=""; foreach ($href as $k=>$v){ $temp=$baseUrl."/p/".$v; if($v==$p){ $a="<span><a href='{$temp}' class='current'>{$v}</a></span>"; }else{ $a="<span><a href='{$temp}'>{$v}</a></span>"; } $show.=$a; } return $show; } /** * 根据传入值计算出可用超链接的区间 * * @param $dataInfo array * @param $p int * @return mixed */ private function getRange($dataCount,$p){ // 该页信息数量没有达一页显示的最大值,则表示该页是最后一页 if($dataCount<$this->page_size){ $end=$p; // 总共需要显示的超链接数量 $hrefCount=self::BACK_HREF_NUMBER+self::FRONT_HREF_NUMBER+1; // 现有分页数量能否满足显示全部超链接 $test=$p-$hrefCount; // 如果不能的话,则显示最多超链接数量 if($test<0){ $start=1; } // 如果可以,则显示全部超链接数量 else{ $start=$test; } } // 如果不是最后一页,则计算前后共需要多少超链接 else{ $test=$p-self::FRONT_HREF_NUMBER; // 表明当前页前面无法放置2个超链接(该值可以修改),所以直接从首页开始显示 if($test<=0){ $start=1; $end=$p+self::BACK_HREF_NUMBER; }else{ $start=$test; $end=$p+self::BACK_HREF_NUMBER; } } for (;$start<=$end;$start++){ $href[$start]=$start; } return $href; }}
不可否认的是这个类生成的超链接有数据显示为空的情况,甚至如果增大BACK_HREF_NUMBER
的值,有的页面还会出现错误的情况,但是对于不能提前确定数量,又想模拟分页的要求来说,预测未来本就需要一点代价不是吗?
阅读全文
0 0
- 分页函数分享
- 分享一个php分页函数
- 散分:分享一个通用分页函数
- Repeater 分页学习分享
- 分享一个分页类。
- jQuery分页插件分享
- 分享Mybatis分页插件
- 分页函数
- 分页函数
- 分页函数
- 分页函数
- 分页函数
- 分页函数
- 分页函数
- 分页函数
- 分页函数
- 分页函数
- 分页函数
- 批量修改文件后缀名
- Kotlin学习资料
- 代码干货 | vue模板语法
- 微信小程序之数据缓存
- 闭包
- 分页函数分享
- SQL 统一更改转换所有表或指定表所有列或指定列的类型 名称 长度 精度
- jq中 html append appendto
- roscpp模式总结
- 信息查询系统总结--C#list的使用
- 顺时针打印矩阵
- 2-SAT
- map的四种遍历
- PHP SOCKET编程 学学