PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > Smarty教程 > 正文

    php+smarty分页程序代码分享

    作者:admin来源:B5教程网浏览:时间:2020-09-30 00:07:50我要评论
    导读:php+smarty分页程序代码分享,希望此代码对各位同学会有帮助哦。
    php+smarty分页程序代码分享,希望此代码对各位同学会有帮助哦。
     
    复制代码代码如下:
    1. /**
    2.  * 分页,公共方法
    3.  * @param int $page     当前页
    4.  * @param int $size     数据条数
    5.  * @param int $count    总记录数
    6.  * @return mixed 页码数组 ('当前页',上一页','下一页','首页','末页','页码') ('current','prev','next','first','last','pages'=>array(0=>array('name'=>1,'page'=>'1')))
    7.  */
    8. public function pager($page,$size,$count){
    9.  //省略页码标示
    10.  $name_prev_more = '...';
    11.  $name_next_more = '...';
    12.  //显示页码数量
    13.  $pages_length   = 9;
    14.     //计算页面总数
    15.     if($count){
    16.      $num = ceil($count/$size);
    17.     }
    18.     if($num && $page){
    19.         //当前页
    20.         $result['current']= $page;
    21.         //上一页
    22.         if($page - 1){
    23.             $result['prev'] = $page - 1;
    24.         }else{
    25.             $result['prev'] = 1;
    26.         }
    27.         //下一页
    28.         if($num == $page){
    29.             $result['next'] = $num;
    30.         }else{
    31.             $result['next'] = $page + 1;
    32.         }
    33.         $pages = array();
    34.         //省略页码的长度计算
    35.         if($num >= $pages_length){
    36.             $length = intval($pages_length/2);
    37.         }else{
    38.          $length = intval($num/2);
    39.         }
    40.         //页码
    41.         for ($i=1;$i<=$num;$i++){
    42.             if($page == $i){
    43.                 $pages[$i]['active'] = 'active';
    44.             }
    45.             if($>= $page-$length && $<=$page+$length){
    46.                 $pages[$i]['page'] = $i;
    47.                 $pages[$i]['name'] = $i;
    48.             }
    49.         }
    50.         //开头省略过长页码
    51.         if($page - 1 >$length){
    52.             $prev_more['page'] = $page - $length -1;
    53.             $prev_more['name']  = $name_prev_more;
    54.             array_unshift($pages,$prev_more);
    55.         }
    56.         //结尾省略过长页码
    57.         if($num - $page >$length){
    58.             $next_more['page'] = $page + $length + 1;
    59.             $next_more['name']  = $name_next_more;
    60.          array_push($pages,$next_more);
    61.         }
    62.         $result['pages'] = $pages;
    63.         //首页,末页
    64.         $result['first'] = 1;
    65.         $result['last']  = $num;
    66.         //print_r($result); //TODO:查看数据结构
    67.         return $result;
    68.     }
    69.     return '';
    70. }
    71. 返回数据结构
    72. pager(1,10,11)
    73. Array
    74. (
    75.     [current] => 1
    76.     [prev] => 1
    77.     [next] => 2
    78.     [pages] => Array
    79.         (
    80.             [1] => Array
    81.                 (
    82.                     [active] => active
    83.                     [page] => 1
    84.                     [name] => 1
    85.                 )
    86.             [2] => Array
    87.                 (
    88.                     [page] => 2
    89.                     [name] => 2
    90.                 )
    91.         )
    92.     [first] => 1
    93.     [last] => 2
    94. )
    95. pager(1,1,11);
    96. Array
    97. (
    98.     [current] => 1
    99.     [prev] => 1
    100.     [next] => 2
    101.     [pages] => Array
    102.         (
    103.             [1] => Array
    104.                 (
    105.                     [active] => active
    106.                     [page] => 1
    107.                     [name] => 1
    108.                 )
    109.             [2] => Array
    110.                 (
    111.                     [page] => 2
    112.                     [name] => 2
    113.                 )
    114.             [3] => Array
    115.                 (
    116.                     [page] => 3
    117.                     [name] => 3
    118.                 )
    119.             [4] => Array
    120.                 (
    121.                     [page] => 4
    122.                     [name] => 4
    123.                 )
    124.             [5] => Array
    125.                 (
    126.                     [page] => 5
    127.                     [name] => 5
    128.                 )
    129.             [6] => Array
    130.                 (
    131.                     [page] => 6
    132.                     [name] => ...
    133.                 )
    134.         )
    135.     [first] => 1
    136.     [last] => 11
    137. )
    138. ?>

    php 调用及 smarty 输出

    php调用(new smarty什么的就不写了)

     
    复制代码代码如下:
    1. $pager = pager($page,$size,$count);
    2. $smarty->assign('pager',$pager);

    smarty 模板
     
    复制代码代码如下:
    1. <div id="pager">
    2.     <a href="?page={$item.page}"></a>
    3.     {foreach from=$pager.pages item=item}
    4.          <a href="?page={$item.page}" class="{$item.active}">{$item.name}</a>
    5.     {/foreach}
    6.     <a href="?page={$item.page}"></a>
    7. </div>

    返回数据结构
     
    复制代码代码如下:
    1. pager(6,1,11)
    2. Array
    3. (
    4.     [current] => 6
    5.     [prev] => 5
    6.     [next] => 7
    7.     [pages] => Array
    8.         (
    9.             [0] => Array
    10.                 (
    11.                     [page] => 1
    12.                     [name] => ...
    13.                 )
    14.             [1] => Array
    15.                 (
    16.                     [page] => 2
    17.                     [name] => 2
    18.                 )
    19.             [2] => Array
    20.                 (
    21.                     [page] => 3
    22.                     [name] => 3
    23.                 )
    24.             [3] => Array
    25.                 (
    26.                     [page] => 4
    27.                     [name] => 4
    28.                 )
    29.             [4] => Array
    30.                 (
    31.                     [page] => 5
    32.                     [name] => 5
    33.                 )
    34.             [5] => Array
    35.                 (
    36.                     [active] => active
    37.                     [page] => 6
    38.                     [name] => 6
    39.                 )
    40.             [6] => Array
    41.                 (
    42.                     [page] => 7
    43.                     [name] => 7
    44.                 )
    45.             [7] => Array
    46.                 (
    47.                     [page] => 8
    48.                     [name] => 8
    49.                 )
    50.             [8] => Array
    51.                 (
    52.                     [page] => 9
    53.                     [name] => 9
    54.                 )
    55.             [9] => Array
    56.                 (
    57.                     [page] => 10
    58.                     [name] => 10
    59.                 )
    60.             [10] => Array
    61.                 (
    62.                     [page] => 11
    63.                     [name] => ...
    64.                 )
    65.         )
    66.     [first] => 1
    67.     [last] => 11
    68. )

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-84-343-1.html
    相关热词搜索: smarty分页 smarty教程