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

??
ThinkPHP分頁類的使用相關(guān)問題,thinkphp分頁
? ??? ?? 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: 麥當(dāng)苗兒 <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>當(dāng)前鏈接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ù)的前面部分是當(dāng)前的頁數(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方法來修改默認(rèn)的一些設(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:頭部描述信息,默認(rèn)值 “共 %TOTAL_ROW% 條記錄”
next:下一頁描述信息,默認(rèn)值 “>>”
first:第一頁描述信息,默認(rèn)值 “1…”
last:最后一頁描述信息,默認(rèn)值 “…%TOTAL_PAGE%”
theme :分頁主題描述信息,包括了上面所有元素的組合 ,設(shè)置該屬性可以改變分頁的各個單元的顯示位置,默認(rèn)值是 “%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(當(dāng)前頁)。

ThinkPHP系統(tǒng)分頁類寫的已經(jīng)很完善只要花幾分鐘時間研究一下源代碼即可,官方注釋也很清晰。這里注解一下使用中的問題。系統(tǒng)默認(rèn)設(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ù),如果默認(rèn)顯示11個頁碼一般太長,個人喜歡設(shè)置為5,當(dāng)然修改這些參數(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 // +---------------------------------------------------------------------...
? ????? ??
? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????.

? AI ??

Undresser.AI Undress

Undresser.AI Undress

???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover

AI Clothes Remover

???? ?? ???? ??? AI ?????.

Video Face Swap

Video Face Swap

??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

???

??? ??

???++7.3.1

???++7.3.1

???? ?? ?? ?? ???

SublimeText3 ??? ??

SublimeText3 ??? ??

??? ??, ???? ?? ????.

???? 13.0.1 ???

???? 13.0.1 ???

??? PHP ?? ?? ??

???? CS6

???? CS6

??? ? ?? ??

SublimeText3 Mac ??

SublimeText3 Mac ??

? ??? ?? ?? ?????(SublimeText3)

???

??? ??

??? ????
1601
29
PHP ????
1502
276
???
thinkphp ????? ???? ?? thinkphp ????? ???? ?? Apr 09, 2024 pm 05:33 PM

ThinkPHP ????? ????? ??? ?????: Composer? ????, ???? ????? ???? php bin/console? ????, ?? ???? ??? http://localhost:8000? ?????.

thinkphp?? ?? ??? ????. thinkphp?? ?? ??? ????. Apr 09, 2024 pm 06:09 PM

ThinkPHP?? ??? PHP ????? ??? ?? ??? ????. ??? ???? 3.2, 5.0, 5.1, 6.0? ????, ??? ??? ??? ???? ??? ??? ???? ? ?????. ?? ?? ??? ThinkPHP 6.0.16???. ??? ??? ? PHP ??, ?? ?? ?? ? ???? ??? ??????. ??? ??? ??? ???? ?? ?? ??? ???? ?? ????.

thinkphp? ???? ?? thinkphp? ???? ?? Apr 09, 2024 pm 05:39 PM

ThinkPHP Framework? ???? ???? ??: ThinkPHP Framework? ?? ????? ?????? ??? ???. ThinkPHP ?? ????? ???? ?? ???(?? ??)? ????. ?????? ?? ????? ?????. ? ??? ?????. ThinkPHP ??????? ??????. ThinkPHP ?????? URL? ???? ?????.

laravel? thinkphp ? ?? ?? ? ???? laravel? thinkphp ? ?? ?? ? ???? Apr 09, 2024 pm 03:18 PM

Laravel? ThinkPHP ?????? ?? ??: ThinkPHP? ????? ??? ? ??? ??? ?? Laravel?? ??? ????. Laravel? ? ????? ??? ??????? ?? ThinkPHP? ? ??? ? ????.

thinkphp? ???? ?? thinkphp? ???? ?? Apr 09, 2024 pm 05:42 PM

ThinkPHP ?? ??: PHP, Composer ? MySQL ??? ?????. Composer? ???? ????? ????. ThinkPHP ?????? ???? ?????. ?????? ??? ?????. ?????? ??? ?????. ??????? ???? http://localhost:8000? ?????.

thinkphp ??? ????? thinkphp ??? ????? Apr 09, 2024 pm 05:24 PM

ThinkPHP? ?? ????, ?? ???, ?? ?? ? ?????? ???? ?? ??? ?? ??? PHP ????????. ?? ?? ???? ??? ?? 10,000? ??? ??? ??? ? ??? JD.com, Ctrip? ?? ??? ? ??? ? ?????? ????? ?? ?? ?????? ?? ?????.

?? ??: API ??? ?? ThinkPHP ?????? ???? ?? ?? ??: API ??? ?? ThinkPHP ?????? ???? ?? Nov 22, 2023 pm 05:18 PM

?? ??: API ??? ?? ThinkPHP ?????? ???? ?? ???? ????? ????? API(?? ????? ?????)? ???? ?? ? ??? ????. API? ??? ??, ?? ?? ? ?? ??? ??? ? ??? ????? ??? ???? ?? ?? ??? ?????. ??? PHP ?? ?????? ThinkPHP ?????? ????? ?? ???? ???? ????.

?? ??: ThinkPHP ?????? ???? ??? ??? ???? ?? ?? ??: ThinkPHP ?????? ???? ??? ??? ???? ?? Nov 22, 2023 pm 12:01 PM

"?? ??: ThinkPHP ?????? ???? ??? ??? ???? ??" ??? ??? ??? ???? ?? ? ?? ????? ?? ?? ?? ??? ??? ???? ??? ???? ?? ?? ??? ?? ? ??????. ??? ??? ??? ??? ????? ?? ???? ??? ???, ?? ??? ??, ??? ?? ?? ?? ??? ?? ??? ??? ???? ?? ??? ??? ???? ?? ?? ?????. PHP ???? ?? ???? ?? ?????? ThinkPHP ?????? ??? ??? ???? ? ?? ??? ??? ?????.

See all articles