自用的分页,代替系统page类的一些功能。可以实现数字分页功能。
用 thinkphp 也好久了。 不过一直没用他的page分页类,因为。。真心不好用。
好久之前就自己鼓捣了一个 分页函数,以代替page的功能。
下面分享一下吧。
主要是两个函数。 一个是正常的page分页功能,还有一个是获取 数字分页功能
如: 1 2 3 4 5 6 这样的分页。
function getShowPages($count,$page,$pagesize)
{
if($page == 0) {$page = 1;}
if(empty($count)){$count=0;}
$firstRow = ($page - 1) * $pagesize;
$countpage = intval($count / $pagesize);
if (($count / $pagesize) > $countpage) {
$countpage = $countpage + 1;
}
if ($page > 1) {
$uppage = $page - 1;
} else {
$uppage = 1;
}
if ($page < $countpage) {
$nextpage = $page + 1;
} else {
$nextpage = $countpage;
}
$showpage['firstRow'] = $firstRow; //首页
$showpage['count'] = $count; //总记录数
$showpage['countpage'] = $countpage; // 总页面数
$showpage['pagesize'] = $pagesize; //页面大小
$showpage['page'] = $page; //当前页
$showpage['uppage'] = $uppage; //上一页
$showpage['nextpage'] = $nextpage; //下一页
return $showpage;
}
//tpl是分页模板 notpl 是当前页不需要链接 page 是当前页 countpage 是总页数
function getPages($tpl,$notpl,$page,$countpage){
$pages="";
if($countpage==1)
{
$pages=str_replace("[page]",$page,$notpl);
}
else
{
if($page>5)
{
$p_s=$page-5;
}
else
{
$p_s=1;
}
if(($page+5)>=$countpage)
{
$p_e=$countpage;
}
else
{
$p_e=$page+5;
}
if($page<5 and $countpage>10)
{
$p_e=$p_e+(10-$p_e);
}
for(;$p_s<=$p_e;$p_s++)
{
if($p_s==$page)
{
$pages_tmp=str_replace("[page]",$p_s,$notpl);
}
else
{
$pages_tmp=str_replace("[page]",$p_s,$tpl);
}
$pages.=$pages_tmp;
}
//if(floor($page%10)==0)
}
return $pages;
}
调用方法:
$count = $M->where($where)->count(); //获取总记录数 自己搞 where
$ShowPage = getShowPages($count, $page, 16); /$count 是上面的记录数 $page是当前页 16 是页面大小
$list = $M->where($where)->order('id desc')->limit($ShowPage['firstRow'] . ',' . $ShowPage['pagesize'])->select(); // 调取相应页面的数据
$this->assign('list', $list);
$this->assign('ShowPage', $ShowPage); //模板赋值
PHP方面基本结束。
模板部分:
//判断是否有多页。只有一页的话不显示分页。
上面需要说明的是:$urltail 这个变量因为我项目单页里集成了所有查询,用来固定URL的。getPages 函数的传参应该不难理解。
代码是自用,比较乱,轻喷。
转载请保留原文地址:http://www.526net.com/blog/qianduan/665.html
AD:真正免费,域名+虚机+企业邮箱=0元