php 分页类

<?php
/**
 * 分页函数助手
 *
 * @package mypage
 */
class Page{
    /**
     * 分页函数
     *
     * @param string $url 页面URL,不含page
     * @param int $total 总数据量
     * @param int $thisPage 当前页数
     * @param int $pageNum 每页数目
     * @param int $pagelen 显示个数
     * @return array
     */
    public function get($url, $total, $thisPage = 1, $pageNum = 50){
        $thisPage = intval($thisPage);
        $thisPage = $thisPage == 0 ? 1 : $thisPage;
        $init_show_nums = 5;//刚开始显示最大个数,如果超过10就加1,直至显示的个数等于$max_show_nums
        $max_show_nums = 8;//最大显示
        $total_nums = ceil($total / $pageNum);
        
        $start = 1;
        $nums = $total_nums;
        
        if($total_nums > $init_show_nums){
            $nums = $init_show_nums + $thisPage - 1;
            if($nums <= $max_show_nums){
                $start = 1;
            }else{
                if($thisPage < ceil($max_show_nums / 2)){
                    $start = 1;
                }else{
                    $start = $thisPage - ceil($max_show_nums / 2) + 1;
                }
                $nums = $max_show_nums;
            }
            if($start + $nums - 1 > $total_nums){
                $nums = $max_show_nums;
                $start = $total_nums - $nums + 1;
            }
        }
        $and = strpos($url, '?') === false ? '?': '&';
        $lastPage = $thisPage - 1 > 0 ? $thisPage - 1 : 0;//上一页
        $nextPage = $thisPage + 1 <= $total_nums ? $thisPage + 1 : 0;//下一页
        $showpages = '';
        if($total_nums > 1){
            $showpages .= "<a href='{$url}'>首页</a>&nbsp;";
            if($lastPage)
            $showpages .= "<a href='{$url}{$and}p={$lastPage}'>上一页</a>&nbsp;";
            $i = $start;
            $count = 1;
            while($count <= $nums){
                $count++;
                if($i == $thisPage){
                    $showpages .= "<a href='{$url}{$and}p={$i}'><strong>{$i}</strong></a>&nbsp;";
                } else {
                    $showpages .= "<a href='{$url}{$and}p={$i}'>{$i}</a>&nbsp;";
                }
                $i++;
            }
            if($nextPage)
                $showpages .= "<a href=\"{$url}{$and}p={$nextPage}\">下一页</a>&nbsp;";
            if( $i<$total_nums )
                $showpages .= "<a href=\"{$url}{$and}p={$total_nums}\">尾页</a>&nbsp;";
        }else{
            $showpages = '';
        }
        return $showpages;
    }

}


?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值