• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP 分页类_php

php 搞代码 3年前 (2018-06-21) 98次浏览 已收录 0个评论

下面是我自己的分页类,可适当的修改 

[php
<?php   
/**  
 * @name Pager's class  
 * @author Refer  
 * @copyright http://www.phpcq.com  
 * @version Alpha 1.0  
 * @todo 下拉菜单分页—From表单传值…可以根据自己的情况(采用GET传值)  
 *  
 */   
class Pager{   
    /**  
     * startRow  
     *  
     * @var Int  
     */   
    public $startRow;   
    /**  
     * 页面的总数  
     *  
     * @var Int  
     */   
    public $pageTotal;   
    /**  
     *翻页值  
     *  
     * @var Int  
     */   
    public $offset;   
    /**  
     * 每页所显示记录数  
     *  
     * @var Int  
     */   
    public $pageSize;   
    /**  
     * get参数  
     *  
     * @var Int  
     */   
    public $get;   
    /**  
     * post参数  
     *  
     * @var Int  
     */   
    public $post;   
    /**  
     * 构造函数–初始化翻页类 (PS:^_^不错的php开发学习交流群:256271784,验证:gole,有兴趣的话可以加入进来一起讨论) 
     *  
     * @param Int $total  
     * @param Int $pageSize  
     */   
    public function __construct($total,$pageSize){   
        $this->get = (int)$_GET['startRow'];   
        $this->post = (int)$_POST['pageNums'];   
        $this->pageSize = $pageSize;   
        $this->pageTotal = ceil($total / $pageSize);   
        switch ($_GET['method']){   
            default:   
                $this->startRow = 1;   
                $this->offset = 0;   
            break;   
            case 'first':   
                $this->first();   
            break;       
            case 'previous':   
                $this->previous();   
            break;       
            case 'next':   
                $this->next();   
            break;       
            case 'last':   
                $this->last();   
            break;       
        }   
    }    
    /**  
     * 首页方法  
     *  
     */   
    public function first(){   
        $this->startRow = 1;   
        $this->offset = ($this->startRow – 1) * $this->pageSize;  
    }   
    /**  
     * 上一页方法  
     *  
     */   
    public function previous(){   
        $this->startRow = $this->get – 1;   
        if ($this->startRow < 1) {   
            $this->startRow = 1;   
        }   
        $this->offset = ($this->startRow – 1) * $this->pageSize;  
    }   
    /**  
     * 下一页方法  
     *  
     */   
    public function next(){   
        $this->startRow = $this->get + 1;   
        if ($this->startRow > $this->pageTotal) {   
            $this->startRow = $this->pageTotal;   
        }   
        $this->offset = ($this->startRow – 1) * $this->pageSize;  
    }   
    /**  
     * 最后页方法  
     *  
     */   
    public function last(){   
        $this->startRow = $this->pageTotal;   
        $this->offset = ($this->startRow – 1) * $this->pageSize;  
    }   
    /**  
     * 下拉菜单翻页  
     *  
     * @return Int  
     */   
    public function numPages(){   
        if ($this->post) {   
            $pageNums = "<option>$this->post</option>";   
            $this->startRow = $this->post;   
            $this->offset = ($this->post – 1) * $this->pageSize;  
        }   
        for ($i = 1; $i <= $this->pageTotal;$i++){   
            if ($i != $this->post) {   
                $pageNums .= "<option>$i</option>";   
            }   
        }   
        return $pageNums;   
    }   
    /**  
     * 当前是第几页  
     *  
     * @return Int  
     */   
    public function noncePage(){   
        if ($this->post) {   
            return $this->startRow = $this->post;   
        } else {   
            return $this->startRow = $this->startRow;   
        }   
    }   
}   
 
 
调用方法: 
[php]  
$total = $total->total();//总记录   
            $pageSize = 15;//每页显示的记录   
            $pager = new Pager($total,$pageSize);   
            if ($pager->post){$startRow = $pager->noncePage();}   
            $startRow = $pager->startRow;   
            $pager->numPages();   
            $article->query("SELECT * FROM `categories` as c,`articles` as n WHERE c.id = n.pid  
                    ORDER BY n.id DESC LIMIT $pager->offset,$pageSize");   
            while ($article->fetchArray()) {   
                $article->data['content'] = mb_substr(strip_tags($article->data['content']),0,40,'utf-8');   
                $articleIndex[] = $article->data;               
            }   
            $article->free();   
        } else {   
            header("location:?act=login");   
        }   
        $view->view->assign('startRow',$startRow);//caption   
        $view->view->assign('total',$total);//caption   
        $view->view->assign('pageNums',$pager->numPages());//pageNums   
        $view->view->assign('noncePage',$pager->noncePage());//pageNums   
        $view->view->assign('pageTotal',$pager->pageTotal);//pageTotal    
 
 
模板页面: 
[php]  
<!–{if $pageTotal > 1}–>   
 <form action="" method="post">   
 <div id="projectpages" class="fontpage">   
 Pager:   
 <select name="pageNums" onchange="JavaScript:submit();" style="height:20px;">  
         <!–{$numPages}–>   
   </select>   
 <a href="?act=blog&method=first&startRow=<!–{$startRow}–>">First</a>    
 <a href="?act=blog&method=previous&startRow=<!–{$startRow}–>">Previous</a>    
 <a href="?act=blog&method=next&startRow=<!–{$startRow}–>">Next</a>   
 <a href="?act=blog&method=last&startRow=<!–{$startRow}–>">Last</a>   
 </div>   
 </form>   
 <!–{/if}–>      
 

欢迎大家阅读《PHP 分页类_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址