php+smarty模板分页程序代码

功能比较全的小分页,传几个参数上去就行,计算后输出数组,没什么新意,无非增加了个缩短页码,结果都给压到一个数组,方便输出和调用..附一个smarty的输出样例….

 代码如下 复制代码

/**
 * 分页,公共方法
 * @param int $page     当前页
 * @param int $size     数据条数
 * @param int $count    总记录数
 * @return mixed 页码数组 ('当前页',上一页','下一页','首页','末页','页码') ('current','prev','next','first','last','pages'=>array(0=>array('name'=>1,'page'=>'1')))
 */
public function pager($page,$size,$count){
 //省略页码标示
 $name_prev_more = '...';
 $name_next_more = '...';
 //显示页码数量
 $pages_length   = 9;

    //计算页面总数
    if($count){
     $num = ceil($count/$size);
    }

    if($num && $page){
        //当前页
        $result['current']= $page;

        //上一页
        if($page - 1){
            $result['prev'] = $page - 1;
        }else{
            $result['prev'] = 1;
        }

        //下一页
        if($num == $page){
            $result['next'] = $num;
        }else{
            $result['next'] = $page + 1;
        }

        $pages = array();

        //省略页码的长度计算
        if($num >= $pages_length){
            $length = intval($pages_length/2);
        }else{
         $length = intval($num/2);
        }

        //页码
        for ($i=1;$i<=$num;$i++){
            if($page == $i){
                $pages[$i]['active'] = 'active';
            }
            if($i >= $page-$length && $i <=$page+$length){
                $pages[$i]['page'] = $i;
                $pages[$i]['name'] = $i;
            }
        }

        //开头省略过长页码
        if($page - 1 >$length){
            $prev_more['page'] = $page - $length -1;
            $prev_more['name']  = $name_prev_more;
            array_unshift($pages,$prev_more);
        }

        //结尾省略过长页码
        if($num - $page >$length){
            $next_more['page'] = $page + $length + 1;
            $next_more['name']  = $name_next_more;
         array_push($pages,$next_more);
        }

        $result['pages'] = $pages;
        //首页,末页
        $result['first'] = 1;
        $result['last']  = $num;
        //print_r($result);   //TODO:查看数据结构
        return $result;
    }
    return '';
}

返回数据结构

pager(1,10,11)

Array
(
    [current] => 1
    [prev] => 1
    [next] => 2
    [pages] => Array
        (
            [1] => Array
                (
                    [active] => active
                    [page] => 1
                    [name] => 1
                )

            [2] => Array
                (
                    [page] => 2
                    [name] => 2
                )

        )

    [first] => 1
    [last] => 2
)

pager(1,1,11);

Array
(
    [current] => 1
    [prev] => 1
    [next] => 2
    [pages] => Array
        (
            [1] => Array
                (
                    [active] => active
                    [page] => 1
                    [name] => 1
                )

            [2] => Array
                (
                    [page] => 2
                    [name] => 2
                )

            [3] => Array
                (
                    [page] => 3
                    [name] => 3
                )

            [4] => Array
                (
                    [page] => 4
                    [name] => 4
                )

            [5] => Array
                (
                    [page] => 5
                    [name] => 5
                )

            [6] => Array
                (
                    [page] => 6
                    [name] => ...
                )

        )

    [first] => 1
    [last] => 11
)

php 调用及 smarty 输出

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

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

smarty 模板

 代码如下 复制代码

<div id="pager">
    <a href="?page={$item.page}"></a>
    {foreach from=$pager.pages item=item}
         <a href="?page={$item.page}" class="{$item.active}">{$item.name}</a>
    {/foreach}
    <a href="?page={$item.page}"></a>
</div>

返回数据结构

 代码如下 复制代码

pager(6,1,11)

Array
(
    [current] => 6
    [prev] => 5
    [next] => 7
    [pages] => Array
        (
            [0] => Array
                (
                    [page] => 1
                    [name] => ...
                )

            [1] => Array
                (
                    [page] => 2
                    [name] => 2
                )

            [2] => Array
                (
                    [page] => 3
                    [name] => 3
                )

            [3] => Array
                (
                    [page] => 4
                    [name] => 4
                )

            [4] => Array
                (
                    [page] => 5
                    [name] => 5
                )

            [5] => Array
                (
                    [active] => active
                    [page] => 6
                    [name] => 6
                )

            [6] => Array
                (
                    [page] => 7
                    [name] => 7
                )

            [7] => Array
                (
                    [page] => 8
                    [name] => 8
                )

            [8] => Array
                (
                    [page] => 9
                    [name] => 9
                )

            [9] => Array
                (
                    [page] => 10
                    [name] => 10
                )

            [10] => Array
                (
                    [page] => 11
                    [name] => ...
                )

        )

    [first] => 1
    [last] => 11
)

时间: 2024-10-30 20:58:46

php+smarty模板分页程序代码的相关文章

smarty 模板分页代码与调用方法

 level e member's product commend list public function product_comm($size = 5){ $pre = $size <> 5 && !empty($_request['lb']) ? " and prolb like '%".$_request['lb']."%' " : ""; $this->where = " judge_flag

php smarty模板生成静态html页面代码

 代码如下 复制代码 include('./www.111cn.net/smarty/smarty.class.php'); $smarty = new smarty(); $smarty->template_dir = "templates/"; $smarty->compile_dir = "templates_c/"; $smarty->left_delimiter = "<{"; $smarty->right

介绍smarty模板

模板 PHP代码:-------------------------------------------------------------------------------- 以下的介绍是基于2.5版的,也不知有BUG没,OS是win2000,php应该 4.1以后的就可以.,兄弟只是开发时使用过几次,没太深的研究, 介绍的在手册上都能找到,如果有错误之处难免多包涵吧 smarty模板据说是php.net推荐使用的,据说功能比较强,据说速度 也不慢,据说用的人越来越多<img src=htt

Smarty模板快速入门

快速入门|模板 在PHP的世界里已经出现了各式各样的模板类,但就功能和速度来说Smarty还是一直处于领先地位,因为Smarty的功能相对强大,所以使用起来比其他一些模板类稍显复杂了一点.现在就用30分钟让您快速入门. 一. 安装     首先打开网页http://smarty.php.net/download.php,下载最新版本的Smarty.解压下载的文件(目录结构还蛮复杂的).接下来我演示给大家一个安装实例,看过应该会举一反三的.     (1) 我在根目录下建立了新的目录learn/,

php Smarty 模板使用方法详解

一.模板中的注释 每一个Smarty模板文件,都是通过Web前台语言(xhtml,css和javascript等)结合Smarty引擎的语法开发的.  用到的web前台开发的语言和原来的完全一样,注释也没有变化       Smarty注释语法是'左结束符变量值*'和'*右结束符变量值',在这两个定界符之间的内容都是注释内容,可以包含一行或多行,并且用户浏览网页查看原代码时不会看到注释,它只是模板内在的注释,以下是注释小例子.     $smarty->left_lelimiter = '<{

sae使用smarty模板的方法

 这篇文章主要介绍了sae使用smarty模板的方法,大家参考使用吧 Smarty是非常流行的模板系统,它分离了业务和逻辑.执行速度快,在php网站中有广泛的运用.   不过在部署到sina app engine(sae)上时出现了问题,因为sae作为云计算平台式无法进行文件读写操作的,所以Smarty中输出的缓存文件就无法实现.   错误信息:"SAE_Fatal_error: Uncaught exception 'SmartyException' with message 'unable

smarty模板中拼接字符串的方法

 这篇文章主要介绍了smarty模板中拼接字符串的方法,需要的朋友可以参考下 PHP页面传到Smarty模板上的变量(这里用,在Smarty上创建两个变量代替)   代码如下: {assign var="name" value='Richard.Lee'} {assign var="age" value='27'}     1.想要在Smarty模板的某个位置输出(Richard.Lee---27) 拼接方法:{$name|cat:"---"|c

PHP使用Smarty模板目录结构配置

在使用PHP模板Smarty过程中,如果不涉及自定义目录结构的话,按照下面的目录组织就可以直接使用了(前提是需要阅读以下用户手册).          图上的每个目录都有了相应的说明,关于smarty的工作原理就是按照Smarty的语法规则编写模本文件,然后PHP脚本提供对应的数据,二者通过Smarty模板引擎最终输出可以展示的文件(包含格式+数据).     如下图是Smarty最基本的工作原理,当然Smarty还提供更多强大的功能.      接下来就是一个Hello Smarty的体验了.

smarty模板引擎从php中获取数据的方法_php实例

本文实例讲述了smarty模板引擎从php中获取数据的方法.分享给大家供大家参考.具体如下: smarty可以分配($smarty->assign)的变量类型:所有php支持的数据类型--基本数据类型.复合数据类型.特殊数据类型(具体见smarty相关手册). 操作/显示文件:index.php 复制代码 代码如下: <?php //创建smarty对象 require_once("./libs/Smarty.class.php"); $smarty = new Smart