国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP學習:Smarty的分頁實現(xiàn)

2024-05-04 23:04:22
字體:
供稿:網(wǎng)友
  smarty中的分頁有很多方法。
  1。使用smarty的分頁插件,如pager,pagnition,sliding_page等,不過感覺都不是太好,幾乎都有一些bug。
  有興趣試用和自己去改進的朋友可以看看:
http://smarty.php.net/contribs/plugins/view.php/function.pager.php
http://www.phpinsider.com/smarty-forum/viewtopic.php?t=2327
http://www.phpinsider.com/smarty-forum/viewtopic.php?t=1604

  2。使用分頁類庫,呵呵,這個網(wǎng)上就太多了,一大把,不過我還沒有發(fā)現(xiàn)寫得很好的,特別是容易擴展的。
  在搜索的時候還看到一個號稱分頁類終結(jié)者的,哈哈,有點好笑。分頁類中把sql都包含進去了,這個是絕對不能容忍的,可以說作者對oo的認識還比較淺。

  不過分頁類庫不一定適合smarty,特別是當記錄集數(shù)據(jù)是二維數(shù)組時,我不想放棄smarty方便的section。這是我沒有用pear::pager的原因,否則還要先對數(shù)組進行處理,也很麻煩。

  3。自己寫啦。。我暫時沒有選擇寫成類庫,不過改寫很容易,下面主要講講思路。

  其實smarty的分頁非常簡單,首先我們可以在模板中這樣實現(xiàn):
{$pager_links}
{section name="list" loop=$productid start=0 max=$pager_total step=1}
{if ($smarty.section.list.index >= $pager_startnum )&& ($smarty.section.list.index <= $pager_endnum )}
產(chǎn)品名稱:{$productname[list]}
產(chǎn)品類別:{$catalogname[list]}
{/if}
  {/section}   

以上就可以將一個記錄集(二維數(shù)組)輕松地打印出來,而且限定每頁的顯示范圍。
{$pager_links} 分頁標簽(就是上一頁,下一頁等)
max=$pager_total  記錄總數(shù)
$smarty.section.list.index >= $pager_startnum )&& ($smarty.section.list.index <= $pager_endnum )
這一行是用來限定記錄的顯示范圍的,如果記錄的索引落在這個范圍之內(nèi)就顯示出來,否則就不顯示。

以上可以看出,在php文件中,我們只需要傳遞4個變量給smarty對象:
1.記錄總數(shù)
2.每頁記錄起始數(shù)
3.每頁記錄結(jié)束數(shù)
4.分頁標簽

以下代碼代參考:
標簽可以自己去寫了,可以擴充成更強大的。現(xiàn)在我沒有時間,不然會寫一個
<?php
$smartyarr = $smarty->get_template_vars();
       
        //記錄總數(shù),每頁顯示記錄條數(shù),總頁數(shù)
        $pager_total = count($smartyarr['productid']);
        $pager_size = 10;
        $pager_number = ceil($pager_total/$pager_size);
        $pager_url = "index.php?action=view";
       
        //當前頁的頁數(shù),從request獲得
        if(isset($_get['pager_pageid'])&& !empty($_get['pager_pageid'])){
            $pager_pageid = intval($_get['pager_pageid']);
        }else{
            //第一次訪問
            $pager_pageid = 1;
        }         

        //每頁的起,始記錄數(shù)
        if ($pager_pageid == 1 ) {
            $pager_startnum = 0;
        } else {
             $pager_startnum = ($pager_pageid -1) * $pager_size;
        }   
       
        $pager_endnum = $pager_startnum + $pager_size;

        if ($pager_pageid == 1 && $pager_number>1) {
            //第一頁
            $pager_links = "上一頁 | <a href=".$pager_url."&pager_pageid=".($pager_pageid+1).">下一頁</a>";
        } elseif($pager_pageid == $pager_number && $pager_number>1) {
            //最后一頁
             $pager_links = "<a href=".$pager_url."&pager_pageid=".($pager_pageid-1).">上一頁</a> | 下一頁";
        } elseif ($pager_pageid > 1 && $pager_pageid <= $pager_number) {
            //中間
             $pager_links = "<a href=".$pager_url."&pager_pageid=".($pager_pageid-1).">上一頁</a> | <a href=".$pager_url."&pager_pageid=".($pager_pageid+1).">下一頁</a>";
        } else {
             $pager_links = "上一頁 | 下一頁";
        }

         $smarty->assign('pager_total',$pager_total);       
        $smarty->assign('pager_startnum',$pager_startnum);
        $smarty->assign('pager_endnum',$pager_endnum);
        $smarty->assign('pager_links',$pager_links);

        return $smarty->fetch ("list.tpl");       
?>
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 年辖:市辖区| 金阳县| 崇仁县| 博兴县| 宿州市| 历史| 育儿| 剑川县| 沭阳县| 来凤县| 高台县| 三河市| 阿坝县| 凤庆县| 德阳市| 许昌县| 屏南县| 方山县| 德兴市| 全椒县| 镇宁| 新巴尔虎右旗| 霍州市| 双峰县| 红安县| 民勤县| 邵武市| 晋江市| 浦北县| 始兴县| 汽车| 连山| 德惠市| 东安县| 大新县| 铁力市| 拉萨市| 清镇市| 安阳县| 永登县| 洱源县|