近期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" > |
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); |
这样,代码上下文基本为
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; |
第三步,接收参数并处理
3.1)php文件接收参数并准备拼接sql
在/admin/order.php第4874行找到“$where = ‘WHERE 1 ‘;”,在下面增加
2 |
if ( $filter [ 'goods_name' ]) |
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 ']) . "%' "; |
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.
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第七行下面增加
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 > |
即可
这个过程中js自动获取了表单的所有项目,而且之前我们已经完成了/admin/order.php中order_list()函数的改造
- ecshop 后台批量上传商品 完整上传
ecshop 后台批量上传商品,之所以无法上传,是因为后台上传php文件方法中没有导入商品原图路径 将ecshop根目录中的admin/goods_batch.php文件全部修改为 <?php ...
- ecshop 后台添加 成本价 利润
ecshop后台admin中的商品操作php文件,goods.php替换为下面的代码, 还要在数据库商品本店售价后门添加 cost 字段 为 商品成本价 ecs_goods表中添加 cost ...
- Ecshop 后台增加一个左侧列表菜单menu菜单的方法
Ecshop 后台增加一个左侧列表菜单menu菜单需要修改三个文件:/admin/includes/inc_menu.php/admin/includes/inc_priv.php/languages ...
- 修改ECSHOP后台的商品列表里显示该商品品牌
如何在在ECSHOP后台的商品列表中也显示商品的品牌”.下面就来最模板讲一下如何来修改.此方法只保证在ECSHOP2.7.2版本下有效,其他版本请参照修改. 第一步:首先我们来打开程序文件: /adm ...
- 在ECSHOP后台的订单列表中显示配送方式
熟悉ECSHOP后台的人都知道,只有点击某个具体的订单,进入订单详细页面才能看到该订单的配送方式,最模板修改的目的,是想让管理者在订单列表页面 就能看到该订单的配送方式. 下面是修改方法:首先来修改 ...
- 在Ecshop后台打印订单页面将商品按货号排序
ECSHOP后台管理里的“打印订单" 页面里的商品排序有点乱,现在想改成按序号来排序,修改方法如下 下面是在2.7.2基础上做的修改 打开 admin/order.php 文件 找到(大约 ...
- 给ecshop后台增加管理功能页面
给ecshop后台增加管理功能页面 比如我们增加一个统计报表叫做 物流费用统计报表 放在后台“报表统计”栏目中 具体操作步骤: 第一步,我们要添加一个菜单到后台,然后设置语言项,最后设置权限,这样,后 ...
- ecshop后台增加模块菜单详细教程(图)
我们有时候针对ecshop如此开发,想在后台加一些菜单,最模板以前提供过教程,但是并非很系统,今天最模板抛砖引玉图文教程告诉大家:如何在ecshop后台增加模块菜单! 首先需要修改四个文件:inc_p ...
- ecshop后台增加模块菜单详细教程
我们有时候针对ecshop如此开发,想在后台加一些菜单,最模板以前提供过教程,但是并非很系统,今天最模板抛砖引玉图文教程告诉大家:如何在ecshop后台增加模块菜单! 首先需要修改四个文件:inc_p ...
随机推荐
- python 子类继承父类的__init__方法
父类A class A(object): def __init__(self, name): self.name=name print "name:", self.name def ...
- javascript学习笔记之DOM与表单
DOM(文档对象模型),猫叔了一个层次化的节点树 一.DOM NODE相关公共属性与方法 DOM中所有节点都实现了NODE接口,该接口的公共属性和方法如下: 1.节点基本属性 1)NodeType 节 ...
- Hadoop学习笔记: HDFS
注:该文内容部分来源于ChinaHadoop.cn上的hadoop视频教程. 一. HDFS概述 HDFS即Hadoop Distributed File System, 源于Google发表于200 ...
- 数据库调优过程(一):SqlServer批量复制(bcp)[C#SqlBulkCopy]性能极低问题
背景 最近一段给xx做项目,这边最头疼的事情就是数据库入库瓶颈问题. 环境 服务器环境:虚拟机,分配32CPU,磁盘1.4T,4T,5T,6T几台服务器不等同(转速都是7200r),内存64G. 排查 ...
- MVVM框架思想
1.MVVM是什么? M:模型 V:视图 VM:视图模型 简单理解:mvc是一个cell面向一个model开发 mvvm是一个cell面向一个viewModel开发, viewModel里面又包含mo ...
- J2EE MyBatis使用
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .20 ...
- mysql 插入重复值 INSERT ... ON DUPLICATE KEY UPDATE
向数据库插入记录时,有时会有这种需求,当符合某种条件的数据存在时,去修改它,不存在时,则新增,也就是saveOrUpdate操作.这种控制可以放在业务层,也可以放在数据库层,大多数数据库都支持这种需求 ...
- PostgreSQL/bin
pg_receivexlog pg_receivexlog—以流的方式从一个PostgreSQL集簇得到事务日志 pg_receivexlog被用来从一个运行着的PostgreSQL集簇以流的方式得到 ...
- 批量文本读取URL获取正常访问且保留对应IP
#coding=utf-8 import sys import requests for i in range(3000,4999,1): url = 'http://192.168.88.139:8 ...
- paper 58 :机器视觉学习笔记(1)——OpenCV配置
开始学习opencv! 1.什么是OpenCV OpenCV的全称是:Open Source Computer Vision Library.OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可 ...