首页 > 其他 > 详细

ecshop 后台分页功能

时间:2016-04-23 16:20:52      阅读:250      评论:0      收藏:0      [点我收藏+]

Ecshop分页规则,分以下几个步骤

1.点击类别,获取第一页获取默认分类列表数据

2.点击“下一页”,采用ajax调取分页内容

 

实例分析(比如订单列表分页admin/order.php)

1.先写一个function order_list() 模块,里面要包括可以进行排序,分页,查询等功能

2.在order.php里面写一个elseif ($_REQUEST[‘act‘] == ‘list‘) ,这里是显示默认分页数据

3.在order.php写一个query(listtable.js默认的是先读取$_REQUEST[‘act‘] == ‘query‘)排序、分页、查询都在query里面完成

4.html页面(默认order_list.html完整代码)

 

实战 ”微仓功能“

1.我先写一个function depot_log_list,可以进行排序、分类、查询。这个function里面很有讲究的

重点代码

function depot_list()
{
   //*f.获取上一次保存的查询条件(如果上一次有进行查询过,则直接从f开始)
$result
= get_filter();
if ($result === false) {
    // a.查询条件
    $filter[‘goods_id‘] = empty($_REQUEST[‘goods_id‘]) ? ‘‘ : trim($_REQUEST[‘goods_id‘]);
//b.记录总条数 $filter[record_count] = $GLOBALS[db]->getOne("SELECT COUNT(*) FROM " . $GLOBALS[ecs]->table(depot_log) . $ex_where); //c.分页大小    
    $filter = page_and_size($filter);
    //d.查询的sql
$sql = "SELECT * FROM " . $GLOBALS[ecs]->table(depot_log) . $ex_where . " order by createtime desc LIMIT " . $filter[start] . , . $filter[page_size];     //e.保存查询条件(cookie保存) set_filter($filter, $sql); } else {
   //*f.获取上一次保存的查询条件(如果没有进行查询过,则从a查询。)

    $sql = $result[‘sql‘];
    $filter = $result[‘filter‘];

    }

    $depot_list = $GLOBALS[db]->getAll($sql);

  //g.组合成系统默认查询条件 $arr = array(depot_list => $depot_list, filter => $filter, page_count => $filter[page_count], record_count => $filter[record_count]); return $arr; }

e.f这两步骤非常的重要,还有if($result===false){}也非常重要

实例代码

function depot_list()
{
    $result = get_filter();
    
    if ($result === false)
    {
        $filter[user_id] = empty($_REQUEST[user_id]) ? ‘‘ : trim($_REQUEST[user_id]);
        $filter[goods_stock] = empty($_REQUEST[goods_stock]) ? ‘‘ : intval($_REQUEST[goods_stock]);
        
        $filter[sort_by]    = empty($_REQUEST[sort_by])    ? goods_stock : trim($_REQUEST[sort_by]);  // js的listTable.sort排序功能,也可以user_id
        $filter[sort_order] = empty($_REQUEST[sort_order]) ? DESC     : trim($_REQUEST[sort_order]);
        
        $ex_where =  WHERE 1 ;
        $ex_where .=" AND user_id = ‘$filter[user_id]‘ ";
        
        
        $filter[record_count] = $GLOBALS[db]->getOne("SELECT COUNT(*) FROM " . $GLOBALS[ecs]->table(depot) . $ex_where);

        /* 分页大小 */
        $filter = page_and_size($filter);
        $sql = "SELECT * FROM " . $GLOBALS[ecs]->table(depot) . $ex_where .
                 " ORDER by " . $filter[sort_by] .   . $filter[sort_order] .
                " LIMIT " . $filter[start] . , . $filter[page_size];

       // $filter[‘keywords‘] = stripslashes($filter[‘keywords‘]);
        set_filter($filter, $sql);
    }
    else
    {
        $sql    = $result[sql];
        $filter = $result[filter];
    }

    $depot_list = $GLOBALS[db]->getAll($sql);
    foreach($depot_list as $k=>$v){
        $sql = "SELECT goods_name,goods_thumb from ".$GLOBALS[ecs]->table(goods)." where goods_id = ".$v[goods_id];
        $re = $GLOBALS[db]->getRow($sql);
        $depot_list[$k][name] = $re[goods_name];
        $depot_list[$k][goods_thumb] = $re[goods_thumb];    
        
    }

    $arr = array(depot_list => $depot_list, filter => $filter,
        page_count => $filter[page_count], record_count => $filter[record_count]);

    return $arr;
}

 

2.写一个列表

实例代码

elseif($_REQUEST[act] == depot_log){
    $smarty->assign(ur_here,      个人微仓操作记录);
   

    $depot = depot_log_list();
    
    //print_r($depot);
    $smarty->assign(depot_log,    $depot[depot_list]);
    $smarty->assign(filter,       $depot[filter]);
    $smarty->assign(record_count, $depot[record_count]);
    $smarty->assign(page_count,   $depot[page_count]);
    $smarty->assign(full_page,    1);

    assign_query_info();
    $smarty->display(depot_log_list.htm);    
}

3.写一个列表查询(这里的depot_log_query ,还可以承接html页面的<a href="javascript:listTable.sort(‘goods_stock‘, ‘DESC‘); ">)

/*会员微仓 ajax 翻页调用*/
elseif ($_REQUEST[act] == depot_list_query){
    
    $depot = depot_list();
    //$depot = user_list();

    $smarty->assign(depot,    $depot[depot_list]);
    $smarty->assign(filter,       $depot[filter]);
    $smarty->assign(record_count, $depot[record_count]);
    $smarty->assign(page_count,   $depot[page_count]);
    
    $sort_flag  = sort_flag($depot[filter]);
    $smarty->assign($sort_flag[tag], $sort_flag[img]);

    make_json_result($smarty->fetch(depot_list.htm), ‘‘, array(filter => $depot[filter], page_count => $depot[page_count]));  // 注意此处的结构,缺少mke_json_result不行     
}

 4.html页面html代码

 

<table cellpadding="3" cellspacing="1">
  <tr>
    <th width="80">
      <input onclick=listTable.selectAll(this, "checkboxes") type="checkbox">
      {$lang.record_id}{$sort_user_id}
    </th>
    <th width="60">缩略图</th>
    <th>商品名称</th>
    <th><a href="javascript:listTable.sort(‘order_amount‘, ‘DESC‘); ">库存</a></th>
    <th>{$lang.handler}</th>
  <tr>
  {foreach from=$depot item=vo}
  <tr>
    <td><input type="checkbox" name="checkboxes[]" value="{$vo.id}" notice="{if $user.user_money ne 0}1{else}0{/if}"/>{$vo.id}</td>
    <td class="first-cell"><a href="../goods.php?id={$vo.id}" target="_blank"><img src="../{$vo.goods_thumb}" width=40 style="border: 1px solid #eee"/></a></td>
    <td><span onclick="listTable.edit(this, ‘edit_email‘, {$user.user_id})"><a href="../goods.php?id={$vo.id}" target="_blank">{$vo.goods_name}</a></span></td>
    <td align="center">{$vo.goods_stock}</td>
    <td align="center">
     
      <a href="users.php?act=depot_log&user_id={$vo.user_id}&goods_id={$vo.goods_id}" title="查看记录"><img src="images/icon_view.gif" border="0" height="21" width="21" /></a>
      
    </td>
  </tr>
  {foreachelse}
  <tr><td class="no-records" colspan="11">{$lang.no_records}</td></tr>
  {/foreach}
  <tr>
      <td colspan="2">
      <input type="hidden" name="act" value="batch_remove" />
      <input type="submit" id="btnSubmit" value="{$lang.button_remove}" disabled="true" class="button" /></td>
      <td align="right" nowrap="true" colspan="9">
      {include file="page.htm"}
      </td>
  </tr>
</table>

 

js代码

{if $full_page}
</div>
<!-- end users list -->
</form>
<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}
onload = function()
{
    //document.forms[‘searchForm‘].elements[‘keyword‘].focus();
    // 开始检查订单
    startCheckOrder();
  //a.listtable.js默认是listTable.query="query",也就是order.php页面的elseif ($_REQUEST[‘act‘] == ‘query‘)
如果不想只想默认的$_REQUEST[‘act‘]==‘query‘,就需要写上以下代码
listTable.query
= "depot_list_query"; 默认载入使用(第一次点击列表) } /** * 搜索用户 */ function searchUser() { //listTable.filter[‘keywords‘] = Utils.trim(document.forms[‘searchForm‘].elements[‘keyword‘].value); listTable.filter[page] = 1;
// b.与a作用一样 listTable.query
= "depot_list_query"; 承接上一次查询条件 listTable.loadList(); } //--> </script> {/literal} {include file="pagefooter.htm"} {/if}

如果改变了,默认的query查询;则a,b两处都不可以少

 

分页实例化结构代码

Array
(
    [depot_list] => Array
        (
            [0] => Array
                (
                    [id] => 1
                    [user_id] => 1
                    [goods_id] => 2
                    [goods_stock] => 2
                    [goods_name] => 荷兰Nutrilon牛栏奶粉 
                )

            [1] => Array
                (
                    [id] => 7
                    [user_id] => 1
                    [goods_id] => 6
                    [goods_stock] => 4
                    [goods_name] => 1111
                )

        )

    [filter] => Array
        (
            [user_id] => 1
            [record_count] => 2
            [page_size] => 4
            [page] => 1
            [page_count] => 1
            [start] => 0
        )

    [page_count] => 1
    [record_count] => 2
)

 

ecshop 后台分页功能

原文:http://www.cnblogs.com/wesky/p/5424685.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!