PHP分页处理

V站笔记

**
* 获取当前url
* @return string
*/
function getUrl()
{
$url = ”;
$url .= $_SERVER[‘SERVER_PORT’] == 443 ? ‘https://’ : ‘http://’;
$url .= $_SERVER[‘HTTP_HOST’];
$url .= $_SERVER[‘REQUEST_URI’];
return $url;
}
/**
* 根据page生成url
* @param $page
* @param string $url
* @return string
*/
function pageUrl($page, $url = ”)
{
$url = empty($url) ? getUrl() : $url;
//查询url中是否存在?
$pos = strpos($url, ‘?’);
if($pos === false)
{
$url .= ‘?page=’ . $page;
}
else
{
$queryString = substr($url, $pos + 1);
//解析querystring为数组
parse_str($queryString, $queryArr);
if(isset($queryArr[‘page’]))
{
unset($queryArr[‘page’]);
}
$queryArr[‘page’] = $page;
//将queryArr重新拼接成queryString
$queryStr = http_build_query($queryArr);
$url = substr($url, 0, $pos) . ‘?’ . $queryStr;
}
return $url;
}
/**
* 分页显示
* @param int $total 数据总数
* @param int $currentPage 当前页
* @param int $pageSize 每页显示条数
* @param int $show 显示按钮数
* @return string
*/
function pages($total, $currentPage, $pageSize, $show = 6)
{
$pageStr = ”;
//仅当总数大于每页显示条数 才进行分页处理
if($total > $pageSize)
{
//总页数
$totalPage = ceil($total / $pageSize);//向上取整 获取总页数
//对当前页进行处理
$currentPage = $currentPage > $totalPage ? $totalPage : $currentPage;
//分页起始页
$from = max(1, ($currentPage – intval($show / 2)));
//分页结束页
$to = $from + $show – 1;
$pageStr .= ‘<div class=”page-nav”>’;
$pageStr .= ‘<ul>’;
//仅当 当前页大于1的时候 存在 首页和上一页按钮
if($currentPage > 1)
{
$pageStr .= “<li><a href='” . pageUrl(1) . “‘>首页</a></li>”;
$pageStr .= “<li><a href='” . pageUrl($currentPage – 1) . “‘>上一页</a></li>”;
}
//当结束页大于总页
if($to > $totalPage)
{
$to = $totalPage;
$from = max(1, $to – $show + 1);
}
if($from > 1)
{
$pageStr .= ‘<li>…</li>’;
}
for($i = $from; $i <= $to; $i++)
{
if($i != $currentPage)
{
$pageStr .= “<li><a href='” . pageUrl($i) . “‘>{$i}</a></li>”;
}
else
{
$pageStr .= “<li><span class=’curr-page’>{$i}</span></li>”;
}
}
if($to < $totalPage)
{
$pageStr .= ‘<li>…</li>’;
}
if($currentPage < $totalPage)
{
$pageStr .= “<li><a href='” . pageUrl($currentPage + 1) . “‘>下一页</a></li>”;
$pageStr .= “<li><a href='” . pageUrl($totalPage) . “‘>尾页</a></li>”;
}
$pageStr .= ‘</ul>’;
$pageStr .= ‘</div>’;
}
return $pageStr;
}

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java3y

从零开始写项目第一篇【搭建环境】

使用Maven搭建SSM环境 SSM需要的基础jar包有哪些??整理一下: c3p0数据连接池 springMVC的JSON springAOP springC...

49310
来自专栏后台开发+音视频+ffmpeg

dpvs源码分析

dpvs是爱奇艺开源的,它是一款基于dpdk的高性能4层负载均衡器。源自于LVS和改版后的alibaba/LVS. dpvs即dpdk-lvs. 等多关于dpv...

8792
来自专栏Android中高级开发

Android开发之漫漫长途 XI——从I到X的小结

该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。该系列引用了《Android开发艺术探索...

1092
来自专栏颇忒脱的技术博客

Servlet 3.1 Async IO分析

Servlet Async Processing提供了一种异步请求处理的手段(见我的另一篇文章Servlet 3.0 异步处理详解),能够让你将Http thr...

1243
来自专栏linux驱动个人学习

alsa声卡分析alsa-utils调用过程(一)-tinyplay

如何分析tinyplay 播放音频和tinymix的过程?需要相应的工具来支持追查; 一、分析tinyplay和tinymix: 1.1 利用strace工具:...

4554
来自专栏软件工程师成长笔记

Mybatis分页插件PageHelper的使用详解

如果你也在用Mybatis,建议尝试该分页插件,个人感觉这个是最方便,超好用的分页插件。 该插件目前支持Oracle,Mysql,MariaDB,SQLite...

8453
来自专栏禁心尽力

SpringBoot集成MyBatis的分页插件PageHelper(回头草)

       俗话说:好?不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper。               ...

6865
来自专栏JackieZheng

学习SpringMVC——你们要的REST风格的CRUD来了

  来来来,让一下,客官,您要的REST清蒸CRUD来了,火候刚刚好,不油不腻,请慢用~~~   如果说前面是准备调料,洗菜,切菜,摆盘,那么今天就来完整的上道...

31910
来自专栏码匠的流水账

聊聊eureka的delta配置

eureka-client-1.8.8-sources.jar!/com/netflix/discovery/DiscoveryClient.java

721
来自专栏Lambda

编程规范

领域层–编码规范 2018年4月4日14:10:38 Controller层编写规范 controller层只是负责从service层获得数据,对外暴露API接...

3556

扫码关注云+社区