首页建站经验 修正Ecshop后台订单统计数据不准确

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

Ecshop本身源码写得就有问题。打开order_status.php文件,翻到最下方,看function get_orderinfo($start_date, $end_date)的定义,其中所有的sql都用了下面的代码:function get_or…

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天),这个错误结果会导致最后的订单统计数量已经不是在指定时间段内的数据,而是指定的时间后再加上一天。

将无用的已确认订单统计代码改成已支付的统计代码:

/* 已确认订单数 */

$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 zuimoban.com 已支付订单数 */

$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);

以上就是本文章的内容,希望对大家有所帮助

本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/jianzhan/jingyan/19046.html
上一篇解决WordPress文章ID不连续问题,修改自动保存文章时间间隔
下一篇 实现ecshop首页增加楼层直达效果分析
admin

作者: admin

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部