既然是分页,道理都是一样的,不过ecshop前台分页的函数和后台分页的函数不同,后台分页函数为page_and_size(),在admin/includes/lib_main.php里。
都是用ajax来进行分页所需参数的传递,用到后台封装的js函数库listtable.js,下面就来说说ajax分页实现的步骤:
1,html页面:引入js{insert_scripts files="../js/utils.js,listtable.js"}
     将分页所需的参数用listTable 对象进行属性赋值,如下:
   <script type="text/javascript" language="JavaScript">
listTable.recordCount = {$record_count};
listTable.pageCount = {$page_count};
{foreach from=$filter item=item key=key}
listTable.filter.{$key} = '{$item}';
{/foreach}
{literal}
 
</script> 
2,php页面:分页的每个要素实现,给模板页面所需的参数赋值

   $card_list = card_list();  //求得目标数组的函数
    $smarty->assign('card_list',   $card_list['list']);
    $smarty->assign('filter',       $card_list['filter']);
    $smarty->assign('record_count', $card_list['record_count']);
    $smarty->assign('page_count',   $card_list['page_count']);
    $smarty->assign('full_page',        1);
   //函数如下,仅作为参考
  function card_list()
{
    $result = get_filter();
    if ($result === false)
    {
        /* 分页大小 */
        $filter = array();
 
        /* 记录总数以及页数 */
        $sql = "SELECT COUNT(*) FROM ".$GLOBALS['ecs']->table('card_number');
        $filter['record_count'] = $GLOBALS['db']->getOne($sql);
 
        $filter = page_and_size($filter);
 
        /* 查询记录 */
        $sql = "SELECT *"."FROM ". $GLOBALS['ecs']->table('card_number') .
               ' WHERE card_id > 0 order by card_id ASC LIMIT ' . $filter['start'] . ',' . $filter['page_size'];
        set_filter($filter, $sql);
    }
    else
    {
        $sql    = $result['sql'];
        $filter = $result['filter'];
    }
 
    $all = $GLOBALS['db']->getAll($sql);
 
    
 
    return array('list' => $all, 'filter' => $filter, 'page_count' => $filter['page_count'], 'record_count' => $filter['record_count']);
}

3,到这里,分页模板page.html里的函数就能进行参数传递,这些函数大致有

{literal}<a href="javascript:listTable.gotoPageFirst()">{/literal}{$lang.page_first}</a>
          {literal}<a href="javascript:listTable.gotoPagePrev()">{/literal}{$lang.page_prev}</a>
          {literal}<a href="javascript:listTable.gotoPageNext()">{/literal}{$lang.page_next}</a>

{literal}<a href="javascript:listTable.gotoPageLast()">{/literal}{$lang.page_last}</a>
打开模板一看便知
4,最后一步
 上面的js函数实际上是这样的链接,act=query&record_count=21&page=1&page_count=2&start=15
所以我们还需要在php页面有一个判断,和输出目标数组一样,只不过这是点击分页后的数组输出。   

elseif ($_REQUEST['act'] == 'query')
{
    $card_list = card_list();
 
    $smarty->assign('card_list',   $card_list['list']);
    $smarty->assign('filter',       $card_list['filter']);
    $smarty->assign('record_count', $card_list['record_count']);
    $smarty->assign('page_count',   $card_list['page_count']);
 
    make_json_result($smarty->fetch('card_list.htm'), '',
        array('filter' => $card_list['filter'], 'page_count' => $card_list['page_count']));
}

到此为止,分页的效果就实现了,这个觉得比前台分页要简单的多,原因是用js来进行参数传递。

ecshop后台分页浅析的更多相关文章

  1. ecshop 后台分页功能

    Ecshop分页规则,分以下几个步骤 1.点击类别,获取第一页获取默认分类列表数据 2.点击“下一页”,采用ajax调取分页内容 实例分析(比如订单列表分页admin/order.php) 1.先写一 ...

  2. SQL Server on Linux 理由浅析

    SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...

  3. 【深入浅出jQuery】源码浅析--整体架构

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  4. 高性能IO模型浅析

    高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking  ...

  5. netty5 HTTP协议栈浅析与实践

      一.说在前面的话 前段时间,工作上需要做一个针对视频质量的统计分析系统,各端(PC端.移动端和 WEB端)将视频质量数据放在一个 HTTP 请求中上报到服务器,服务器对数据进行解析.分拣后从不同的 ...

  6. Jvm 内存浅析 及 GC个人学习总结

    从诞生至今,20多年过去,Java至今仍是使用最为广泛的语言.这仰赖于Java提供的各种技术和特性,让开发人员能优雅的编写高效的程序.今天我们就来说说Java的一项基本但非常重要的技术内存管理 了解C ...

  7. 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler

    熟悉WebForm开发的朋友一定都知道,Page类必须实现一个接口,就是IHttpHandler.HttpHandler是一个HTTP请求的真正处理中心,在HttpHandler容器中,ASP.NET ...

  8. ecshop验证码

    <?php //仿制ecshop验证码(四位大写字母和数字.背景) //处理码值(四位大写字母和数字组成) //所有的可能的字符集合 $chars = 'ABCDEFGHIJKLMNOPQRST ...

  9. 【深入浅出jQuery】源码浅析2--奇技淫巧

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

随机推荐

  1. visor 发布

    2014-4-10 visor.com.cn  的域名备案终于审核通过了.http://www.visor.com.cn 终于可以访问了,欢迎大家使用免费的线框图应用设计工具.

  2. AngularJs的UI组件ui-Bootstrap分享(十一)——Typeahead

    Typeahead指令是一个用于智能提示或自动完成的控件,就像Jquery的AutoComplete控件一样.来看一个最简单的例子: <!DOCTYPE html> <html ng ...

  3. c++ redis-client

    http://hahaya.github.io/operator-redis-under-linux/#0-tsina-1-10809-397232819ff9a47a7b7e80a40613cfe1 ...

  4. AFN断点续传思路

  5. post和get请求

    get请求:不安全,参数在url地址中的参数的长度不能大于1024字节 post请求:安全,参数都是凤凰族昂在data里的,参数长度不限

  6. Android -- 关闭AsyncTask(异步任务)

    前面说了如何操作AsyncTask,这篇我们来说一下如何关闭AsyncTask. 有人就问了:为什么要关闭AsyncTask呢?很简单,AsyncTask 是在后台执行耗时操作(获取数据),当你离开当 ...

  7. python入门笔记

    创建变量 python的变量不需要声明数据类型. >>> fred=100 >>> print (fred) 100 >>> fred 100 创 ...

  8. C语言程序设计第10堂作业

    一.本次课主要内容: 本次课程学习数组,一种最基本的构造类型,它是一组相同类型数据的有序集合.数组中的元素在内存中连续存放,每个元素都属于同一种数据类型,用数组名和下标可以唯一地确定数组元素: (1) ...

  9. C#读取大文本文件

    今天偶遇一同事抱怨,sqlserver导出的CSV,明明有1000W条,但用excel打开就只剩100W了,足足消失了90%,所以她怀疑文件是足量的1000W条,是excel捣了鬼.可是文件容量有2G ...

  10. 深入理解JavaScript系列:试着谈谈闭包

    闭包可能是JavaScript里最被人神乎其神的一个概念,世间万物皆凡夫俗子,你觉着他神奇是因为你根本没有了解,所有的事物当你了解透彻后就不会有这种不明觉厉的错觉了.哈哈哈,上来又是一顿哲学普及. 下 ...