PHP ページネーション

Jun 13, 2016 pm 12:35 PM
gt quot this

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

<?php 
/** 
 * @name Pager's class 
 * @author Refer 
 * @copyright 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; 
        } 
    } 
} 
ログイン後にコピー


呼び出し方法:
$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 までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Huawei GT3 ProとGT4の違いは何ですか? Huawei GT3 ProとGT4の違いは何ですか? Dec 29, 2023 pm 02:27 PM

Huawei GT3 ProとGT4の違いは何ですか?

修正: Windows 11 で Snipping ツールが機能しない 修正: Windows 11 で Snipping ツールが機能しない Aug 24, 2023 am 09:48 AM

修正: Windows 11 で Snipping ツールが機能しない

iPhoneでApp Storeに接続できないエラーを修正する方法 iPhoneでApp Storeに接続できないエラーを修正する方法 Jul 29, 2023 am 08:22 AM

iPhoneでApp Storeに接続できないエラーを修正する方法

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决

watch4proとGTのどちらが優れていますか? watch4proとGTのどちらが優れていますか? Sep 26, 2023 pm 02:45 PM

watch4proとGTのどちらが優れていますか?

Java でこのメソッドを使用する方法 Java でこのメソッドを使用する方法 Apr 18, 2023 pm 01:58 PM

Java でこのメソッドを使用する方法

iPadOS 17.4 で iPad のバッテリー寿命を最適化する方法 iPadOS 17.4 で iPad のバッテリー寿命を最適化する方法 Mar 21, 2024 pm 10:31 PM

iPadOS 17.4 で iPad のバッテリー寿命を最適化する方法

この点を理解してフロントエンド担当者の7割をキャッチアップした記事 この点を理解してフロントエンド担当者の7割をキャッチアップした記事 Sep 06, 2022 pm 05:03 PM

この点を理解してフロントエンド担当者の7割をキャッチアップした記事

See all articles