欢迎光临 - 我的站长站,本站所有资源仅供学习与参考,禁止用于商业用途或从事违法行为!

ecshop教程

修正Ecshop后台订单统计数据不准确BUG

ecshop教程 我的站长站 2019-05-18 共135人阅读

Ecshop后台的订单数据统计不正确,问题出在order_status.php文件function get_orderinfo($start_date, $end_date)的定义,其中所有的sql都用了下面的代码:

function get_orderinfo($start_date, $end_date){$order_info = array();/* 未确认订单数 */$sql = 'SELECT COUNT(*) AS unconfirmed_num FROM ' .$GLOBALS['ecs']->table('order_info')." WHERE order_status = '" .OS_UNCONFIRMED. "' AND add_time >= '$start_date'".
" AND add_time < '" . ($end_date + 86400) . "'";

很显然,这里有个很明显的逻辑错误,即$end_date+86400,除非这里用户选择的开始时间和结束时间是同一天,否则没有必要加上86400(86400秒等于1天),这个错误结果会导致最后的订单统计数量已经不是在指定时间段内的数据,而是指定的时间后再加上一天。
另外Ecshop自己本身订单确认功能,导致的默认订单统计页面,只显示未确认,已确认,已成交,无效这四个信息。这四个信息都不包括最最重要的已付款的订单数的信息
只要将无用的已确认订单统计代码改成已支付的统计代码:

/* 已确认订单数 */
$sql = 'SELECT COUNT(*) AS confirmed_num FROM ' .$GLOBALS['ecs']->table('order_info').
" WHERE order_status = '" .OS_CONFIRMED. "' AND shipping_status NOT ". db_create_in(array(SS_SHIPPED, SS_RECEIVED)) . " AND pay_status NOT" . db_create_in(array(PS_PAYED, PS_PAYING)) ." AND add_time >= '$start_date'".
" AND add_time < '" . ($end_date + 86400) . "'";
$order_info['confirmed_num'] = $GLOBALS['db']->getOne($sql);

改成:

/* by tiandi 已支付订单数 */
$sql = 'SELECT COUNT(*) AS confirmed_num FROM ' .$GLOBALS['ecs']->table('order_info').
" WHERE pay_status =" . PS_PAYED ." AND shipping_status NOT" . db_create_in(array(SS_SHIPPED, SS_RECEIVED)) ." AND add_time >= '$start_date'".
" AND add_time < $end_date";
$order_info['confirmed_num'] = $GLOBALS['db']->getOne($sql);

即可修复ecshop统计不准备问题。

标签 网站统计
相关推荐
  • 网站统计
  • 网站访问统计dedecms插件
    网站访问统计dedecms插件

    dedecms访问统计插件安装方法1.将文件复制到网站目录2.在模板中加入以下代码<script src="{dede:field name=&#39;phpurl&#39;/}/stat.php" type="text/javascript"></script>3.重新生成html即可...

    织梦cms插件 1465 4年前
  • 帝国网站访问统计插件
    帝国网站访问统计插件

    我的站长站原创帝国网站访问统计小插件跟帝国官方的统计插件功能没法比,5555本插件简单、小巧、访问记录存文本,不需要数据库支持。帝国CMS插件使用方法: 1.将文件复制到...

    帝国cms插件 1162 9年前
  • 帝国CMS统计访问人数插件下载
    帝国CMS统计访问人数插件下载

    本插件适用于帝国CMS6.0以上版本 安装帝国CMS插件1、如果你的后台目录不是e/admin,请修改本插件包里的 /upload/e/admin 目录名为你改过的后台目录名;2、将&ldquo;upload...

    帝国cms插件 779 9年前
  • 二次开发统计专题信息数量帝国CMS教程

    本次帝国CMS统计专题信息数量教程主要讲的是列表页list.var的代码写法。其他标签调用同理,只需要小改就可以了。二次开发后大致效果如下图统计的当前专题的信息数量,并按时间分类统计了7天内收录的信息和30天内收录的专题信息。首先我们来帝国CMS调用...

    帝国cms教程 164 4年前
  • 修正Ecshop后台订单统计数据不准确BUG

    Ecshop后台的订单数据统计不正确,问题出在order_status.php文件function get_orderinfo($start_date, $end_date)的定义,其中所有的sql都用了下面的代码:function get_orderinfo($start_date, $end_date){$order_info = array();/* 未确认订单数 */$sql...

    ecshop教程 135 4年前