龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php简单分页类|page.class.php

时间:2014-07-13 02:01来源:网络整理 作者:网络 点击:
分享到:
php简单分页类|page.class.php 使用方法:$p = new page;$list = $p-gt;getPage($sql, $page, 10);说明:$sql 需要查询的sql语句,$page表示当前页数,补始时,请设定$page = 1,最后一个参数10则表示每一页的

使用方法:

$p = new page;

$list = $p->getPage($sql, $page, 10);

说明:$sql 需要查询的sql语句,$page表示当前页数,补始时,请设定$page = 1,最后一个参数10则表示每一页的记录数量

$page = $p->setPage('/news/list/?page=', 6);

'/news/list/?page=' 表示翻页要链接到的地方,后面这个参数6则表示翻页按钮有6个(会根据当前翻页情况自动变化),不过最好设置成奇数,比如7 个的时候,则前后各3个,加中间一个(当前)。

不足的地方:每次统计总记录数是比较浪费资源的,还有就是记录数据过少时(不足以指定翻页数量时)会出现负的翻页数

<?php
class page extends db{

    public function getPage($sql, $page, $size){
        $this->page = $page;
        $this->pageAll = ceil($this->numrows($sql) / $size);
        return $this->fetchAll($sql.' LIMIT '.($this->page - 1) * $size.' , '.$size); 
    }

    public function setPage($uri, $offset){
        if($this->page < 2){
            return $this->leftPage($uri, $this->page, $offset);   
        }elseif($this->page > 1 && $this->page < $this->pageAll){
            return $this->middlePage($uri, $this->page, $offset);
        }elseif($this->page > $this->pageAll - 1){
            return $this->rightPage($uri, $this->page, $offset);
        }
    }

    private function leftPage($uri, $page, $offset){
        $first = '';
        $last = '<a href="'.$uri.$this->pageAll.'">>></a>';    
        $current = '<a class="current">'.$page.'</a>';
        $prev = ''; $next = '';
        for($i = 1; $i < $offset; $i++){
            $nextNum = $page + $i;
            $next .= '<a href="'.$uri.$nextNum.'">'.$nextNum.'</a>';
        }
        $next .= '<a href="'.$uri.($page + 1).'">></a>';
        return '<div class="page">'.$first.$prev.$current.$next.$last.'</div>';
    }

    private function middlePage($uri, $page, $offset){
        $diff = $this->pageAll - $page;
        $first = '<a href="'.$uri.'1"><<</a>';
        $last = '<a href="'.$uri.$this->pageAll.'">>></a>';    
        $current = '<a class="current">'.$page.'</a>';
        $prev = ''; $next = '';
        if($diff < ceil($offset/2)){
            for($i = 1; $i < $offset-$diff; $i++){
                $prevNum = $page - $i;
                $prev = '<a href="'.$uri.$prevNum.'">'.$prevNum.'</a>'.$prev;   
            }
            for($i = 1; $i <= $diff; $i++){
                $nextNum = $page + $i;
                $next .= '<a href="'.$uri.$nextNum.'">'.$nextNum.'</a>';
            }
        }elseif($page > ceil($offset/2)){
            for($i = 1; $i < ceil($offset/2); $i++){
                $prevNum = $page - $i;
                $prev = '<a href="'.$uri.$prevNum.'">'.$prevNum.'</a>'.$prev;
                $nextNum = $page + $i;
                $next .= '<a href="'.$uri.$nextNum.'">'.$nextNum.'</a>';
            }
        }elseif($page < $offset){
            for($i = 1; $i < $page; $i++){
                $prevNum = $page - $i;
                $prev = '<a href="'.$uri.$prevNum.'">'.$prevNum.'</a>'.$prev;   
            }
            for($i = 1; $i <= $offset - $page; $i++){
                $nextNum = $page + $i;
                $next .= '<a href="'.$uri.$nextNum.'">'.$nextNum.'</a>';
            }
        }
        $prev = '<a href="'.$uri.($page - 1).'"><</a>'.$prev;    
        $next .= '<a href="'.$uri.($page + 1).'">></a>';
        return '<div class="page">'.$first.$prev.$current.$next.$last.'</div>';
    }

    private function rightPage($uri, $page, $offset){
        $first = '<a href="'.$uri.'1"><<</a>';
        $last = ''; 
        $current = '<a class="current">'.$page.'</a>';
        $prev = ''; $next = '';
        for($i = 1; $i < $offset; $i++){
            $prevNum = $page - $i;
            $prev = '<a href="'.$uri.$prevNum.'">'.$prevNum.'</a>'.$prev;
        }
        $prev = '<a href="'.$uri.($page - 1).'"><</a>'.$prev;    
        return '<div class="page">'.$first.$prev.$current.$next.$last.'</div>';
    }   

}
//该片段来自于http://outofmemory.cn
精彩图集

赞助商链接