国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
ThinkPHP分頁類的使用相關(guān)問題,thinkphp分頁
首頁 後端開發(fā) php教程 ThinkPHP分頁類的使用相關(guān)問題,thinkphp分頁_PHP教程

ThinkPHP分頁類的使用相關(guān)問題,thinkphp分頁_PHP教程

Jul 12, 2016 am 08:59 AM
thinkphp

ThinkPHP分頁類的使用相關(guān)問題,thinkphp分頁

ThinkPHP3.2.3<span>
Page</span>.<span>class</span>.<span>php文件源碼

</span><?<span>php
</span><span>//</span><span> +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 麥當苗兒 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------</span>
<span>namespace Think;

</span><span>class</span><span> Page{
    </span><span>public</span> <span>$firstRow</span>; <span>//</span><span> 起始行數(shù)</span>
    <span>public</span> <span>$listRows</span>; <span>//</span><span> 列表每頁顯示行數(shù)</span>
    <span>public</span> <span>$parameter</span>; <span>//</span><span> 分頁跳轉(zhuǎn)時要帶的參數(shù)</span>
    <span>public</span> <span>$totalRows</span>; <span>//</span><span> 總行數(shù)</span>
    <span>public</span> <span>$totalPages</span>; <span>//</span><span> 分頁總頁面數(shù)</span>
    <span>public</span> <span>$rollPage</span>   = 11;<span>//</span><span> 分頁欄每頁顯示的頁數(shù)</span>
    <span>public</span> <span>$lastSuffix</span> = <span>true</span>; <span>//</span><span> 最后一頁是否顯示總頁數(shù)</span>

    <span>private</span> <span>$p</span>       = 'p'; <span>//</span><span>分頁參數(shù)名</span>
    <span>private</span> <span>$url</span>     = ''; <span>//</span><span>當前鏈接URL</span>
    <span>private</span> <span>$nowPage</span> = 1<span>;

    </span><span>//</span><span> 分頁顯示定制</span>
    <span>private</span> <span>$config</span>  = <span>array</span><span>(
        </span>'header' => '<span class="rows">共 %TOTAL_ROW% 條記錄</span>',
        'prev'   => '<<',
        'next'   => '>>',
        'first'  => '1...',
        'last'   => '...%TOTAL_PAGE%',
        'theme'  => '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%',<span>
    );

    </span><span>/*</span><span>*
     * 架構(gòu)函數(shù)
     * @param array $totalRows  總的記錄數(shù)
     * @param array $listRows  每頁顯示記錄數(shù)
     * @param array $parameter  分頁跳轉(zhuǎn)的參數(shù)
     </span><span>*/</span>
    <span>public</span> <span>function</span> __construct(<span>$totalRows</span>, <span>$listRows</span>=20, <span>$parameter</span> = <span>array</span><span>()) {
        C(</span>'VAR_PAGE') && <span>$this</span>->p = C('VAR_PAGE'); <span>//</span><span>設(shè)置分頁參數(shù)名稱</span>
        <span>/*</span><span> 基礎(chǔ)設(shè)置 </span><span>*/</span>
        <span>$this</span>->totalRows  = <span>$totalRows</span>; <span>//</span><span>設(shè)置總記錄數(shù)</span>
        <span>$this</span>->listRows   = <span>$listRows</span>;  <span>//</span><span>設(shè)置每頁顯示行數(shù)</span>
        <span>$this</span>->parameter  = <span>empty</span>(<span>$parameter</span>) ? <span>$_GET</span> : <span>$parameter</span><span>;
        </span><span>$this</span>->nowPage    = <span>empty</span>(<span>$_GET</span>[<span>$this</span>->p]) ? 1 : <span>intval</span>(<span>$_GET</span>[<span>$this</span>-><span>p]);
        </span><span>$this</span>->nowPage    = <span>$this</span>->nowPage>0 ? <span>$this</span>->nowPage : 1<span>;
        </span><span>$this</span>->firstRow   = <span>$this</span>->listRows * (<span>$this</span>->nowPage - 1<span>);
    }

    </span><span>/*</span><span>*
     * 定制分頁鏈接設(shè)置
     * @param string $name  設(shè)置名稱
     * @param string $value 設(shè)置值
     </span><span>*/</span>
    <span>public</span> <span>function</span> setConfig(<span>$name</span>,<span>$value</span><span>) {
        </span><span>if</span>(<span>isset</span>(<span>$this</span>->config[<span>$name</span><span>])) {
            </span><span>$this</span>->config[<span>$name</span>] = <span>$value</span><span>;
        }
    }

    </span><span>/*</span><span>*
     * 生成鏈接URL
     * @param  integer $page 頁碼
     * @return string
     </span><span>*/</span>
    <span>private</span> <span>function</span> url(<span>$page</span><span>){
        </span><span>return</span> <span>str_replace</span>(<span>urlencode</span>('[PAGE]'), <span>$page</span>, <span>$this</span>-><span>url);
    }

    </span><span>/*</span><span>*
     * 組裝分頁鏈接
     * @return string
     </span><span>*/</span>
    <span>public</span> <span>function</span><span> show() {
        </span><span>if</span>(0 == <span>$this</span>->totalRows) <span>return</span> ''<span>;

        </span><span>/*</span><span> 生成URL </span><span>*/</span>
        <span>$this</span>->parameter[<span>$this</span>->p] = '[PAGE]'<span>;
        </span><span>$this</span>->url = U(ACTION_NAME, <span>$this</span>-><span>parameter);
        </span><span>/*</span><span> 計算分頁信息 </span><span>*/</span>
        <span>$this</span>->totalPages = <span>ceil</span>(<span>$this</span>->totalRows / <span>$this</span>->listRows); <span>//</span><span>總頁數(shù)</span>
        <span>if</span>(!<span>empty</span>(<span>$this</span>->totalPages) && <span>$this</span>->nowPage > <span>$this</span>-><span>totalPages) {
            </span><span>$this</span>->nowPage = <span>$this</span>-><span>totalPages;
        }

        </span><span>/*</span><span> 計算分頁臨時變量 </span><span>*/</span>
        <span>$now_cool_page</span>      = <span>$this</span>->rollPage/2<span>;
        </span><span>$now_cool_page_ceil</span> = <span>ceil</span>(<span>$now_cool_page</span><span>);
        </span><span>$this</span>->lastSuffix && <span>$this</span>->config['last'] = <span>$this</span>-><span>totalPages;

        </span><span>//</span><span>上一頁</span>
        <span>$up_row</span>  = <span>$this</span>->nowPage - 1<span>;
        </span><span>$up_page</span> = <span>$up_row</span> > 0 ? '<a class="prev" href="' . <span>$this</span>->url(<span>$up_row</span>) . '">' . <span>$this</span>->config['prev'] . '</a>' : ''<span>;

        </span><span>//</span><span>下一頁</span>
        <span>$down_row</span>  = <span>$this</span>->nowPage + 1<span>;
        </span><span>$down_page</span> = (<span>$down_row</span> <= <span>$this</span>->totalPages) ? '<a class="next" href="' . <span>$this</span>->url(<span>$down_row</span>) . '">' . <span>$this</span>->config['next'] . '</a>' : ''<span>;

        </span><span>//</span><span>第一頁</span>
        <span>$the_first</span> = ''<span>;
        </span><span>if</span>(<span>$this</span>->totalPages > <span>$this</span>->rollPage && (<span>$this</span>->nowPage - <span>$now_cool_page</span>) >= 1<span>){
            </span><span>$the_first</span> = '<a class="first" href="' . <span>$this</span>->url(1) . '">' . <span>$this</span>->config['first'] . '</a>'<span>;
        }

        </span><span>//</span><span>最后一頁</span>
        <span>$the_end</span> = ''<span>;
        </span><span>if</span>(<span>$this</span>->totalPages > <span>$this</span>->rollPage && (<span>$this</span>->nowPage + <span>$now_cool_page</span>) < <span>$this</span>-><span>totalPages){
            </span><span>$the_end</span> = '<a class="end" href="' . <span>$this</span>->url(<span>$this</span>->totalPages) . '">' . <span>$this</span>->config['last'] . '</a>'<span>;
        }

        </span><span>//</span><span>數(shù)字連接</span>
        <span>$link_page</span> = ""<span>;
        </span><span>for</span>(<span>$i</span> = 1; <span>$i</span> <= <span>$this</span>->rollPage; <span>$i</span>++<span>){
            </span><span>if</span>((<span>$this</span>->nowPage - <span>$now_cool_page</span>) <= 0<span> ){
                </span><span>$page</span> = <span>$i</span><span>;
            }</span><span>elseif</span>((<span>$this</span>->nowPage + <span>$now_cool_page</span> - 1) >= <span>$this</span>-><span>totalPages){
                </span><span>$page</span> = <span>$this</span>->totalPages - <span>$this</span>->rollPage + <span>$i</span><span>;
            }</span><span>else</span><span>{
                </span><span>$page</span> = <span>$this</span>->nowPage - <span>$now_cool_page_ceil</span> + <span>$i</span><span>;
            }
            </span><span>if</span>(<span>$page</span> > 0 && <span>$page</span> != <span>$this</span>-><span>nowPage){

                </span><span>if</span>(<span>$page</span> <= <span>$this</span>-><span>totalPages){
                    </span><span>$link_page</span> .= '<a class="num" href="' . <span>$this</span>->url(<span>$page</span>) . '">' . <span>$page</span> . '</a>'<span>;
                }</span><span>else</span><span>{
                    </span><span>break</span><span>;
                }
            }</span><span>else</span><span>{
                </span><span>if</span>(<span>$page</span> > 0 && <span>$this</span>->totalPages != 1<span>){
                    </span><span>$link_page</span> .= '<span class="current">' . <span>$page</span> . '</span>'<span>;
                }
            }
        }

        </span><span>//</span><span>替換分頁內(nèi)容</span>
        <span>$page_str</span> = <span>str_replace</span><span>(
            </span><span>array</span>('%HEADER%', '%NOW_PAGE%', '%UP_PAGE%', '%DOWN_PAGE%', '%FIRST%', '%LINK_PAGE%', '%END%', '%TOTAL_ROW%', '%TOTAL_PAGE%'),
            <span>array</span>(<span>$this</span>->config['header'], <span>$this</span>->nowPage, <span>$up_page</span>, <span>$down_page</span>, <span>$the_first</span>, <span>$link_page</span>, <span>$the_end</span>, <span>$this</span>->totalRows, <span>$this</span>->totalPages),
            <span>$this</span>->config['theme'<span>]);
        </span><span>return</span> "<div>{<span>$page_str</span>}</div>"<span>;
    }
}</span>

通常在數(shù)據(jù)查詢后都會對數(shù)據(jù)集進行分頁操作,ThinkPHP也提供了分頁類來對數(shù)據(jù)分頁提供支持。 下面是數(shù)據(jù)分頁的兩種示例。

第一種:利用Page類和limit方法

<span>$User</span> = M('User'); <span>//</span><span> 實例化User對象</span>
<span>$count</span>      = <span>$User</span>->where('status=1')-><span>count</span>();<span>//</span><span> 查詢滿足要求的總記錄數(shù)</span>
<span>$Page</span>       = <span>new</span> \Think\Page(<span>$count</span>,25);<span>//</span><span> 實例化分頁類 傳入總記錄數(shù)和每頁顯示的記錄數(shù)(25)</span>
<span>$show</span>       = <span>$Page</span>->show();<span>//</span><span> 分頁顯示輸出
// 進行分頁數(shù)據(jù)查詢 注意limit方法的參數(shù)要使用Page類的屬性</span>
<span>$list</span> = <span>$User</span>->where('status=1')->order('create_time')->limit(<span>$Page</span>->firstRow.','.<span>$Page</span>->listRows)-><span>select();
</span><span>$this</span>->assign('list',<span>$list</span>);<span>//</span><span> 賦值數(shù)據(jù)集</span>
<span>$this</span>->assign('page',<span>$show</span>);<span>//</span><span> 賦值分頁輸出</span>
<span>$this</span>->display(); <span>//</span><span> 輸出模板</span>

第二種:分頁類和page方法的實現(xiàn)

<span>$User</span> = M('User'); <span>//</span><span> 實例化User對象
// 進行分頁數(shù)據(jù)查詢 注意page方法的參數(shù)的前面部分是當前的頁數(shù)使用 $_GET[p]獲取</span>
<span>$list</span> = <span>$User</span>->where('status=1')->order('create_time')->page(<span>$_GET</span>['p'].',25')-><span>select();
</span><span>$this</span>->assign('list',<span>$list</span>);<span>//</span><span> 賦值數(shù)據(jù)集</span>
<span>$count</span>      = <span>$User</span>->where('status=1')-><span>count</span>();<span>//</span><span> 查詢滿足要求的總記錄數(shù)</span>
<span>$Page</span>       = <span>new</span> \Think\Page(<span>$count</span>,25);<span>//</span><span> 實例化分頁類 傳入總記錄數(shù)和每頁顯示的記錄數(shù)</span>
<span>$show</span>       = <span>$Page</span>->show();<span>//</span><span> 分頁顯示輸出</span>
<span>$this</span>->assign('page',<span>$show</span>);<span>//</span><span> 賦值分頁輸出</span>
<span>$this</span>->display(); <span>//</span><span> 輸出模板</span>

帶入查詢條件
如果是POST方式查詢,如何確保分頁之后能夠保持原先的查詢條件呢,我們可以給分頁類傳入?yún)?shù),方法是給分頁類的parameter屬性賦值

<span>$count</span>      = <span>$User</span>->where(<span>$map</span>)-><span>count</span>();<span>//</span><span> 查詢滿足要求的總記錄數(shù)</span>
<span>$Page</span>       = <span>new</span> \Think\Page(<span>$count</span>,25);<span>//</span><span> 實例化分頁類 傳入總記錄數(shù)和每頁顯示的記錄數(shù)
//分頁跳轉(zhuǎn)的時候保證查詢條件</span>
<span>foreach</span>(<span>$map</span> <span>as</span> <span>$key</span>=><span>$val</span><span>) {
    </span><span>$Page</span>->parameter[<span>$key</span>]   =   <span>urlencode</span>(<span>$val</span><span>);
}
</span><span>$show</span>       = <span>$Page</span>->show();<span>//</span><span> 分頁顯示輸出</span>

分頁樣式定制
我們可以對輸出的分頁樣式進行定制,分頁類Page提供了一個setConfig方法來修改默認的一些設(shè)置。例如:

<span>$page</span>->setConfig('header','<li class="rows">共<b>%TOTAL_ROW%</b>條記錄  第<b>%NOW_PAGE%</b>頁/共<b>%TOTAL_PAGE%</b>頁</li>'<span>);
            </span><span>$page</span>->setConfig('prev', '上一頁'<span>);
            </span><span>$page</span>->setConfig('next', '下一頁'<span>);
            </span><span>$page</span>->setConfig('first', '首頁'<span>);
            </span><span>$page</span>->setConfig('last', '尾頁'<span>);    
            </span><span>$page</span>->setConfig('theme', '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');

setConfig方法支持的屬性包括:
header:頭部描述信息,默認值 “共 %TOTAL_ROW% 條記錄”
next:下一頁描述信息,默認值 “>>”
first:第一頁描述信息,默認值 “1…”
last:最后一頁描述信息,默認值 “…%TOTAL_PAGE%”
theme :分頁主題描述信息,包括了上面所有元素的組合 ,設(shè)置該屬性可以改變分頁的各個單元的顯示位置,默認值是 “%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%”

其中,顯示位置的對應(yīng)的關(guān)系為:
位置 說明
%FIRST% 表示第一頁的鏈接顯示
%UP_PAGE% 表示上一頁的鏈接顯示
%LINK_PAGE% 表示分頁的鏈接顯示
%DOWN_PAGE% 表示下一頁的鏈接顯示
%END% 表示最后一頁的鏈接顯示
除了改變顯示信息外,你還可以使用樣式來定義分頁的顯示效果。 這些樣式class包括:first(第一頁)、prev(上一頁)、next(下一頁)、end(最后一頁)、num(其他頁的數(shù)字)、current(當前頁)。

ThinkPHP系統(tǒng)分頁類寫的已經(jīng)很完善只要花幾分鐘時間研究一下源代碼即可,官方注釋也很清晰。這里注解一下使用中的問題。系統(tǒng)默認設(shè)置了

thinkphp分頁

<code class="hljs cs has-numbering"><span class="hljs-keyword">public $rollPage   = <span class="hljs-number">11;<span class="hljs-comment">// 分頁欄每頁顯示的頁數(shù)
<span class="hljs-keyword">public $lastSuffix = <span class="hljs-keyword">true; <span class="hljs-comment">// 最后一頁是否顯示總頁數(shù)</span></span></span></span></span></span></code><br /><br />

  一開始看注釋還不是很清楚,其實第一個參數(shù)是控制顯示多少頁數(shù),如果默認顯示11個頁碼一般太長,個人喜歡設(shè)置為5,當然修改這些參數(shù)不要在系統(tǒng)源文件中修改,而是在使用的時候設(shè)置$page->rollPage=5即可。

  而第二個參數(shù)就比較坑人了,我們在個性化分頁顯示的時候通常會采用setConfig('last','尾頁'); 用來設(shè)置最后一頁顯示為“尾頁”,但是在show方法中可以看到tp在$this->lastSuffix 為真的時候重置該$this->config['last']的值為總頁數(shù)這樣導(dǎo)致無論你怎么設(shè)置最后一業(yè)都顯示為數(shù)字。也不知道官方為什么這么設(shè)置,解決辦法依然是重新設(shè)置$page->lastSuffix = false; 即可。
分頁類

?

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1100149.htmlTechArticleThinkPHP分頁類的使用相關(guān)問題,thinkphp分頁 ThinkPHP3.2.3 Page . class . php文件源碼 ? php // +---------------------------------------------------------------------...
本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應(yīng)的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

thinkphp專案怎麼運行 thinkphp專案怎麼運行 Apr 09, 2024 pm 05:33 PM

執(zhí)行 ThinkPHP 專案需要:安裝 Composer;使用 Composer 建立專案;進入專案目錄,執(zhí)行 php bin/console serve;造訪 http://localhost:8000 查看歡迎頁面。

thinkphp有幾個版本 thinkphp有幾個版本 Apr 09, 2024 pm 06:09 PM

ThinkPHP 擁有多個版本,針對不同 PHP 版本而設(shè)計。主要版本包括 3.2、5.0、5.1 和 6.0,而次要版本用於修復(fù) bug 和提供新功能。目前最新穩(wěn)定版本為 ThinkPHP 6.0.16。在選擇版本時,需考慮 PHP 版本、功能需求和社群支援。建議使用最新穩(wěn)定版本以獲得最佳性能和支援。

thinkphp怎麼運行 thinkphp怎麼運行 Apr 09, 2024 pm 05:39 PM

ThinkPHP Framework 的本機運作步驟:下載並解壓縮 ThinkPHP Framework 到本機目錄。建立虛擬主機(可選),指向 ThinkPHP 根目錄。配置資料庫連線參數(shù)。啟動 Web 伺服器。初始化 ThinkPHP 應(yīng)用程式。存取 ThinkPHP 應(yīng)用程式 URL 運行。

laravel和thinkphp哪個好 laravel和thinkphp哪個好 Apr 09, 2024 pm 03:18 PM

Laravel 和 ThinkPHP 框架的效能比較:ThinkPHP 效能通常優(yōu)於 Laravel,專注於最佳化和快取。 Laravel 性能良好,但對於複雜應(yīng)用程序,ThinkPHP 可能更適合。

thinkphp怎麼安裝 thinkphp怎麼安裝 Apr 09, 2024 pm 05:42 PM

ThinkPHP 安裝步驟:準備 PHP、Composer、MySQL 環(huán)境。使用 Composer 建立專案。安裝 ThinkPHP 框架及相依性。配置資料庫連線。產(chǎn)生應(yīng)用程式碼。啟動應(yīng)用程式並造訪 http://localhost:8000。

thinkphp效能怎麼樣 thinkphp效能怎麼樣 Apr 09, 2024 pm 05:24 PM

ThinkPHP 是一款高效能的 PHP 框架,具備快取機制、程式碼最佳化、平行處理和資料庫最佳化等優(yōu)勢。官方性能測試顯示,它每秒可處理超過 10,000 個請求,實際應(yīng)用中被廣泛用於京東商城、攜程網(wǎng)等大型網(wǎng)站和企業(yè)系統(tǒng)。

開發(fā)建議:如何利用ThinkPHP框架進行API開發(fā) 開發(fā)建議:如何利用ThinkPHP框架進行API開發(fā) Nov 22, 2023 pm 05:18 PM

開發(fā)建議:如何利用ThinkPHP框架進行API開發(fā)隨著網(wǎng)際網(wǎng)路的不斷發(fā)展,API(ApplicationProgrammingInterface)的重要性也日益凸顯。 API是不同應(yīng)用程式之間進行通訊的橋樑,它可以實現(xiàn)資料共享、功能呼叫等操作,為開發(fā)者提供了相對簡單且快速的開發(fā)方式。而ThinkPHP框架作為一款優(yōu)秀的PHP開發(fā)框架,具有高效能、可擴展且易用

開發(fā)建議:如何利用ThinkPHP框架實現(xiàn)非同步任務(wù) 開發(fā)建議:如何利用ThinkPHP框架實現(xiàn)非同步任務(wù) Nov 22, 2023 pm 12:01 PM

《開發(fā)建議:如何利用ThinkPHP框架實現(xiàn)非同步任務(wù)》隨著網(wǎng)路技術(shù)的快速發(fā)展,Web應(yīng)用程式對於處理大量並發(fā)請求和複雜業(yè)務(wù)邏輯的需求也越來越高。為了提高系統(tǒng)的效能和使用者體驗,開發(fā)人員常常會考慮利用非同步任務(wù)來執(zhí)行一些耗時操作,例如發(fā)送郵件、處理文件上傳、產(chǎn)生報表等。在PHP領(lǐng)域,ThinkPHP框架作為一個流行的開發(fā)框架,提供了一些便捷的方式來實現(xiàn)非同步任務(wù)。

See all articles