近期ecshop网站做活动,统计商品订单量的时候没有按商品名搜索的选项,只能手动查询。这样效率很低下,而且容易出错。

现在为列表增加一个简单的“按商品名搜索”表单项。效果如下图

涉及到2个文件,分别是/admin/order.php,/admin/templates/order_list.htm,下面详说。

第一步,增加表单项

在/admin/templates/order_list.htm第11行下面增加

1 商品名<input name="goods_name" type="text" id="goods_name" size="15">

这样,代码上下文基本为

1 {$lang.order_sn}<input name="order_sn" type="text" id="order_sn" size="15">
2  {$lang.consignee|escape}<input name="consignee" type="text" id="consignee"size="15">
3 商品名<input name="goods_name" type="text" id="goods_name" size="15">
4  {$lang.all_status}
5  <select name="status" id="status">

第二步,js获取值

在/admin/order_list.htm第105行下面增加

1 listTable.filter['goods_name'] = Utils.trim(document.forms['searchForm'].elements['goods_name'].value);

这样,代码上下文基本为

1 /**
2  * 搜索订单
3  */
4  function searchOrder()
5  {
6  listTable.filter['order_sn'] = Utils.trim(document.forms['searchForm'].elements['order_sn'].value);
7  listTable.filter['consignee'] = Utils.trim(document.forms['searchForm'].elements['consignee'].value);
8  listTable.filter['goods_name'] = Utils.trim(document.forms['searchForm'].elements['goods_name'].value);
9  listTable.filter['composite_status'] = document.forms['searchForm'].elements['status'].value;
10  listTable.filter['page'] = 1;
11  listTable.loadList();
12  }

第三步,接收参数并处理

3.1)php文件接收参数并准备拼接sql

在/admin/order.php第4874行找到“$where = ‘WHERE 1 ‘;”,在下面增加

1 $join_goods =" ";
2  if ($filter['goods_name'])
3  {
4  $join_goods " LEFT JOIN " .$GLOBALS['ecs']->table('order_goods'). " AS og ON o.order_id=og.order_id LEFT JOIN " .$GLOBALS['ecs']->table('goods'). " AS g ON g.goods_id = og.goods_id ";
5  $where .= " AND g.goods_name LIKE '%" . mysql_like_quote($filter['goods_name']) . "%'";
6  }

3.2)拼接sql

分别更改/admin/order.php第5025,5029,5041行sql语句为下面三句代码

1,

1 $sql "SELECT COUNT(*) FROM " $GLOBALS['ecs']->table('order_info') . " AS o ,".
2  $GLOBALS['ecs']->table('users') . " AS u "$join_goods$where;

2.

1 $sql "SELECT COUNT(*) FROM " $GLOBALS['ecs']->table('order_info') . " AS o ".$join_goods$where;

3.

1 /* 查询 */
2  $sql "SELECT o.order_id, o.order_sn, o.add_time, o.order_status, o.shipping_status, o.order_amount, o.money_paid," .
3  "o.pay_status, o.consignee, o.address, o.email, o.tel, o.extension_code, o.extension_id, " .
4  "(" . order_amount_field('o.') . ") AS total_fee, " .
5  "IFNULL(u.user_name, '" .$GLOBALS['_LANG']['anonymous']. "') AS buyer ".
6  " FROM " $GLOBALS['ecs']->table('order_info') . " AS o " .
7  " LEFT JOIN " .$GLOBALS['ecs']->table('users'). " AS u ON u.user_id=o.user_id ".$join_goods$where .
8  " ORDER BY $filter[sort_by] $filter[sort_order] ".
9  " LIMIT " . ($filter['page'] - 1) * $filter['page_size'] . ",$filter[page_size]";

完成,这样就可以了

有几点可以改进:表单名可以存到系统语言包;可以按照此方法在“订单查询”那个大表单里扩展更多动能,紧急情况就先这样…

为了搜索订单更精准,决定完成之前说的改进:在“订单查询”那个大表单里扩展”商品名”检索功能,相当简单:

在/admin/templates/order_query.htm第七行下面增加

1 <tr>
2  <td><div align="right"><strong>商品名</strong></div></td>
3  <td colspan="3"><input name="goods_name" type="text" id="goods_name" size="40"></td>
4  </tr>

即可

这个过程中js自动获取了表单的所有项目,而且之前我们已经完成了/admin/order.php中order_list()函数的改造

Ecshop后台订单列表增加”商品名”检索字段的更多相关文章

  1. ecshop 后台批量上传商品 完整上传

    ecshop 后台批量上传商品,之所以无法上传,是因为后台上传php文件方法中没有导入商品原图路径 将ecshop根目录中的admin/goods_batch.php文件全部修改为 <?php ...

  2. ecshop 后台添加 成本价 利润

    ecshop后台admin中的商品操作php文件,goods.php替换为下面的代码, 还要在数据库商品本店售价后门添加  cost  字段 为 商品成本价 ecs_goods表中添加  cost  ...

  3. Ecshop 后台增加一个左侧列表菜单menu菜单的方法

    Ecshop 后台增加一个左侧列表菜单menu菜单需要修改三个文件:/admin/includes/inc_menu.php/admin/includes/inc_priv.php/languages ...

  4. 修改ECSHOP后台的商品列表里显示该商品品牌

    如何在在ECSHOP后台的商品列表中也显示商品的品牌”.下面就来最模板讲一下如何来修改.此方法只保证在ECSHOP2.7.2版本下有效,其他版本请参照修改. 第一步:首先我们来打开程序文件: /adm ...

  5. 在ECSHOP后台的订单列表中显示配送方式

    熟悉ECSHOP后台的人都知道,只有点击某个具体的订单,进入订单详细页面才能看到该订单的配送方式,最模板修改的目的,是想让管理者在订单列表页面 就能看到该订单的配送方式. 下面是修改方法:首先来修改 ...

  6. 在Ecshop后台打印订单页面将商品按货号排序

    ECSHOP后台管理里的“打印订单" 页面里的商品排序有点乱,现在想改成按序号来排序,修改方法如下 下面是在2.7.2基础上做的修改 打开 admin/order.php  文件 找到(大约 ...

  7. 给ecshop后台增加管理功能页面

    给ecshop后台增加管理功能页面 比如我们增加一个统计报表叫做 物流费用统计报表 放在后台“报表统计”栏目中 具体操作步骤: 第一步,我们要添加一个菜单到后台,然后设置语言项,最后设置权限,这样,后 ...

  8. ecshop后台增加模块菜单详细教程(图)

    我们有时候针对ecshop如此开发,想在后台加一些菜单,最模板以前提供过教程,但是并非很系统,今天最模板抛砖引玉图文教程告诉大家:如何在ecshop后台增加模块菜单! 首先需要修改四个文件:inc_p ...

  9. ecshop后台增加模块菜单详细教程

    我们有时候针对ecshop如此开发,想在后台加一些菜单,最模板以前提供过教程,但是并非很系统,今天最模板抛砖引玉图文教程告诉大家:如何在ecshop后台增加模块菜单! 首先需要修改四个文件:inc_p ...

随机推荐

  1. 修改了系统自带头文件后,Xcode会报错

    1.Xcode自带头文件的路径 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Develo ...

  2. ASP.NET MVC Template

    http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html http://st ...

  3. Javascript中Number()、parseIn()和parseFloat()的区别

    有3个函数可以把非数值转化成数值:Number().parseInt()和parseFloat().第一个函数,即转型函数Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值 ...

  4. Pytho实现tail -f

    实现Python版的tail -f功能 tail -f 的功能非常好用.我们用Python也可以实现这样的功能.实现的原理是通过Python版本的inotify获得文件的更新消息,从而读取更新的行.p ...

  5. jQuery中的siblings

    所谓siblings,英文翻译就是兄弟节点.那么故名思意,就是拿到某元素的兄弟节点(不包括自己). <html> <head> <script type="te ...

  6. ClassLoader,Thread.currentThread().setContextClassLoader,tomcat的ClassLoader

    实际上,在Java应用中所有程序都运行在线程里,如果在程序中没有手工设置过ClassLoader,对于一般的java类如下两种方法获得的ClassLoader通常都是同一个 this.getClass ...

  7. nyist 596 谁是最好的Coder

    http://acm.nyist.net/JudgeOnline/problem.php?pid=596 谁是最好的Coder 时间限制:1000 ms  |  内存限制:65535 KB 难度:0 ...

  8. [转]SecureCRT使用配置详细图文教程

        Secure CRT是一款支持 SSH2.SSH1.Telnet.Telnet/SSH.Relogin.Serial.TAPI.RAW 等协议的终端仿真程序,最吸引我的是,SecureCRT ...

  9. 位置式PID与增量式PID算法

    位置式PID与增量式PID算法  PID控制是一个二阶线性控制器     定义:通过调整比例.积分和微分三项参数,使得大多数的工业控制系统获得良好的闭环控制性能.     优点             ...

  10. c++之路进阶——hdu3507(Print Article)

    参考博文:http://www.cnblogs.com/ka200812/archive/2012/08/03/2621345.html//讲的真的很好,有个小错误,博客里的num全为sum,像我这种 ...