PHP常用工具类之分页类

分页是WEB项目所必需的基本功能,也是作为码农的基本技能点,所以不多说了上代码吧~(@^_^@)~

class PageTool{
    private $pageSize = 10; //每页显示条数 
    private $total;         //查询的总条数 
    private $totalPages;    //总页数   
    private $page;          //当前页码
    private $up;            //上一页
    private $next;          //下一页           
    private $pageBanner;    //导航条   


    function __construct($total,$pageSize=false,$page=1){
        //获取总条数
        $this->total        = $total;
        if($pageSize){
            $this->pageSize = $pageSize;
        }
        //得到分页总页数
        $totalPages = ceil($this->total/$this->pageSize);

        //当前访问的页数
        $page=isset($_GET['p'])?$_GET['p']:$page;
        //当获取的值小于1或者大于总页数予以纠正
        $this->page= $page<1?1:($page>$totalPages?$totalPages:$page);
  
       
        $this->totalPages   = $totalPages;
        $this->up           = $page-1;
        $this->next         = $page+1;
        $this->pageBanner   = '';
    }


    //分页导航栏处理
    public function pageMain(){
        $page       = $this->page;
        $pageBanner = $this->pageBanner;
        $totalPages = $this->totalPages;
        $up         = $this->up;
        $next       = $this->next;

        /**************首页处理**************************/
        if($page==1){
            //当前页为第一页,首页和上一页不可用
            $pageBanner .= "<span>首页</span>&nbsp<span>上一页<span>&nbsp";
            $pageBanner .= "<span>1</span>&nbsp";
        }else{
            $pageBanner .= "<a href='?p=1'>首页</a>&nbsp<a href='?p=$up'>上一页</a>&nbsp";
            $pageBanner .= "<a href='?p=1'>1</a>&nbsp";
        }

        /*****************当页数小于一定值时全显示*********************/    
        if($totalPages<=7){
            for($i=2;$i<$totalPages;$i++){
                if($i==$page){
                    //当前显示页无连接标记
                    $pageBanner .= "<span>$i</span>&nbsp";
                }else{
                    $pageBanner .= "<a href='?p=$i'>$i</a>&nbsp";
                }
            }           
        }
        /******************************************************/

        /*********当页数大于一定值,不需要全部显示时处理**********/
        if($totalPages>7){

            /**********前2到4页处理****************************/
            if($page<4){
                for($i=2;$i<=4;$i++){
                    if($i==$page){
                        $pageBanner .= "<span>$i</span>&nbsp";
                    }else{
                        $pageBanner .= "<a href='?p=$i'>$i</a>&nbsp";               
                    }
                }
                        $pageBanner .= "<span>...<span>&nbsp";                  
            }

            /**********中间页处理******************************/
            if($page>=4&&$page<$totalPages-2){                  
                        $pageBanner .= "<span>...<span>&nbsp";  
                for($i=$page-1;$i<=$page+1;$i++){
                    if($i==$page){
                        $pageBanner .= "<span>$i</span>&nbsp";
                    }else{
                        $pageBanner .= "<a href='?p=$i'>$i</a>&nbsp";               
                    }
                                
                }
                        $pageBanner .= "<span>...<span>&nbsp";
            }

            /**********后四页处理********************************/
            if($page>=$totalPages-2){
                    $pageBanner .= "<span>...<span>&nbsp";  
                for($i=$totalPages-3;$i<$totalPages;$i++){
                    if($i==$page){
                    $pageBanner .= "<span>$i</span>&nbsp";
                    }else{
                    $pageBanner .= "<a href='?p=$i'>$i</a>&nbsp";               
                    }
                }

            }   
        }
        /************************************************************/

        /**********尾页处理*******************************************/ 
        if($page==$totalPages){
            $pageBanner .= "<span>$totalPages</span>&nbsp";
            $pageBanner .= "<span>下一页</span>&nbsp<span>尾页</span>&nbsp";
        }else{
            $pageBanner .= "<a href='?p=$totalPages'>$totalPages</a>&nbsp";
            $pageBanner .= "<a href='?p=$next'>下一页</a>&nbsp<a href='?p=$totalPages'>尾页</a>";
        }   


        echo $pageBanner;

    }

}

调用示例

 

    //导入工具类
    include('Paging.class.php');

    //导入数据库操作类
    include_once('../../../test/MYSQLi/test_02_mysqli_connAction.php');
    $conn = new ConnectAction;
    //调用查询总条数函数
    $total =$conn->cnt();

    $page=isset($_GET['p'])?$_GET['p']:1;
    $pageSize = 5;

    //调用分页查询函数,返回查询结果
    //$obj = $conn->page($page,$pageSize);
    //print_r($obj);

    $page = new PageTool($total,$pageSize,$page);
    echo $page->pageMain();

 

效果截图

  总页数小于等于7时

总页数大于7时

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值