ホームページ  >  記事  >  バックエンド開発  >  PHP ページネーション

PHP ページネーション

WBOY
WBOYオリジナル
2016-06-13 12:35:5815033ブラウズ

PHP ページング クラス
以下は私自身のページング クラスであり、適切に変更できます

<?php 
/** 
 * @name Pager's class 
 * @author Refer 
 * @copyright www.phpcq.com 
 * @version Alpha 1.0 
 * @todo 下拉菜单分页---From表单传&#20540;...可以根据自己的情况(采用GET传&#20540;) 
 * 
 */ 
class Pager{ 
    /** 
     * startRow 
     * 
     * @var Int 
     */ 
    public $startRow; 
    /** 
     * 页面的总数 
     * 
     * @var Int 
     */ 
    public $pageTotal; 
    /** 
     *翻页&#20540; 
     * 
     * @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; 
        } 
    } 
} 


呼び出し方法:
$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  


テンプレートページ:
<!--{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}-->    

この記事は「清源教育」ブログからのものです。転載する場合はここに明記してください。ありがとうございます。さらにビデオチュートリアルを閲覧するには、Qingyuan Education の公式 Web サイトにログインしてください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。