我的程序有错吗?

2016-07-07 15:07 来源:www.chinab4c.com 作者:ecshop专家

想在后台管理的订单列表里给订单增加一个过期判断.
方法:我在 ecs_order_info 表里增加了二个日期字段 start_dateend_date 用来保存起始日期及结束日期,然后在列表订单信息时,用结束日期(end_date)减今天得到日期差,当在0~5天内时,用红色显示日期字段及日期差.

然后,在后台管理的 lib_order.php 里修改了如下函数(见红色部分):
function order_info($order_id, $order_sn = '')
{
/* 计算订单各种费用之和的语句 */
$total_fee = " (goods_amount - discount + tax + shipping_fee + insure_fee + pay_fee + pack_fee + card_fee) AS total_fee ";
/* 增加计算日期差的MySQL语句 */
$overed_days = " (to_days(end_date)-to_days(now())) AS over_days ";
$order_id = intval($order_id);
if ($order_id > 0)
{
$sql = "SELECT *, " . $total_fee . "," . $overed_days . "FROM " . $GLOBALS['ecs']->table('order_info') .
" WHERE order_id = '$order_id'";
}
else
{
$sql = "SELECT *, " . $total_fee . "," . $overed_days . "FROM " . $GLOBALS['ecs']->table('order_info') .
" WHERE order_sn = '$order_sn'";
}
$order = $GLOBALS['db']->getRow($sql);

/* 格式化金额字段 */
...略(无改动)...
}
return $order;
}

当然,也在模板文件 order_list.htm 里增加了如下语句:
{if ($order.over_days > 0) and ($order.over_days < 5)}
<font color="red">{$order.start_date}至{$order.end_date} [过期{$order.over_days}天]</font>
{else}
{$order.start_date}至{$order.end_date} [过期{$order.over_days}天]
{/if}


结果:
表里增加的日期字段可以读显出来,但是日期差(过期天数却不能读显.

请教各位高手指导!谢谢!!!


回答:
mysql的时间跟php的时间有可能出现不一致情况

哪怕出来个有差异的数据,也可以调整.

谢谢您的回答!