您的位置:首页 > 运维架构

ecshop二次开发之 修改ecshop购物车退出后保留购物车购买的商品

2010-05-14 00:39 309 查看

修改ecshop购物车退出后保留购物车购买的商品

操作版本:2.7

有时候特定的需求下,需要将购买的物品保留,或者当会员
登陆买东西之后,不小心关闭浏览器,或者是退出的时
候,还可以让商品
保留在购物车,如果下次登陆,还可以看到购物车的产
品.

首先,在没有登陆的时候,购物品车表cart中,user_id为空,所以当登陆的时候,可以将这个值写为用户
的id,然后,当退出的时候,删除购物车的条件也严
格一些,当有user_id不为空的时候,就不删除,当下次登陆的时候,将上次user_id下的session_id修改为当前登陆的
session_id,如果这次也购买了该产品,那么你就将以前的产品数量加到当前该产品数量只下,然后删除之前购买的产品,从cart表中,这样就实现
了购物车在退出的情况下,只要登陆的时候购买的产品,都可以保留下来.

1: 修改includes/cls_session.php中的 destroy_session()函数

$this->db->query('DELETE FROM ' .
$GLOBALS['ecs']->table('cart') . " WHERE session_id =
'$this->session_id' and user_id =''");

2:lib_mian.php文件中的update_user_info()函数

$sql = "update ".$GLOBALS['ecs']->table('cart')." set user_id
=".$_SESSION['user_id']." where session_id = '".SESS_ID."'";

$GLOBALS['db'] -> query($sql);

$sql1 = "update ".$GLOBALS['ecs']->table('cart')." set session_id
='".SESS_ID."' where user_id = '".$_SESSION['user_id']."'";

$GLOBALS['db'] -> query($sql1);

$re = $GLOBALS['db'] -> getAll("select *,sum(goods_number) as
goods_number from ".$GLOBALS['ecs']->table('cart')." where user_id =
'{$_SESSION['user_id']}' and session_id = '".SESS_ID."' group by
goods_id");

if($re){

foreach ($re as $k => $v){

$sql = "update ".$GLOBALS['ecs']->table('cart'). " set
goods_number = ".$v['goods_number']." where rec_id = ".$v['rec_id'];

$GLOBALS['db'] -> query($sql);

$sql = "delete from ".$GLOBALS['ecs']->table('cart')." where
rec_id <> {$v['rec_id']} and user_id = '{$_SESSION['user_id']}'
and session_id = '".SESS_ID."' and goods_id = ".$v['goods_id'];

$GLOBALS['db'] -> query($sql);

}

}

这样就可以实现了。

原始文章来自:http://www.ishoww.com/viewthread.php?tid=1373
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: