php外包、微信开发、app开发尽在蓝普!PHP技术服务商

工作周记

的购物车机制,当用户打开网站时会在session表产生一条seesion,登陆时更新这条seession。此时如果用户将商品添加至购物车,就会在 cart表中添加以session_id为Id的商品数据。而用户退出登录时系统会调用destroy_session()函数,清购物车。函数部分如 下:(cls_session.php文件中)

function destroy_session()

   {   .此处省略部分代码

             

           $this->db->query(‘DELETE FROM ‘ . $GLOBALS[‘ecs’]->table(‘cart’) . ” WHERE session_id = ‘$this->session_id’“ );

     此处省略部分代码

所以此时退出购物车就被清空了

具体实现代码:

1.cls_session.

function destroy_session()

   {   .此处省略部分代码            $this->db->query(‘DELETE FROM ‘ . $GLOBALS[‘ecs’]->table(‘cart’) . ” WHERE session_id = ‘$this->session_id’ AND user_id =””);

    此处省略部分代码}

2.lib.main.php

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

    $sql2=”select distinct(c.goods_id) from”.$GLOBALS[‘ecs’]->table(‘cart’).”as c left join”

    .$GLOBALS[‘ecs’]->table(‘goods’).”as g on c.goods_id=g.goods_id where g.is_on_sale =0 AND c.user_id = ‘”.$_SESSION[‘user_id’].”‘”;

    $data = $GLOBALS[‘db’] -> getAll($sql2);

   if($data){

    ($data as $k=>$v){

    $sql=”delete from”.$GLOBALS[‘ecs’]->table(‘cart’).”where goods_id = ‘”.$v[‘goods_id’].”‘”;

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

 }}}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////分隔线

在privilege.php中发现一个function clear_cart()用于清理cart中无效的数据的,难怪购物车的商品,session一过期就没有了!~

既然我们不需要定期清cart中的无效数据,这个function其实就没有用了,但我们改一下,可以用来清理己下架的商品,这样上面.lib.main.php文件中的清理下架商品的部分就可以删除了!~

修改后的function如下:

function clear_cart()
{
 
  

   // 删除cart中无效的数据
   //$sql = “DELETE FROM ” . $GLOBALS[‘ecs’]->table(‘cart’) .
   //  ” WHERE session_id NOT ” . db_create_in($valid_sess);
   // $GLOBALS[‘db’]->query($sql);


     $sql2=”select distinct(c.goods_id) from”.$GLOBALS[‘ecs’]->table(‘cart’).”as c left join”
    .$GLOBALS[‘ecs’]->table(‘goods’).”as g on c.goods_id=g.goods_id where g.is_on_sale =0 AND c.extension_code=” “;
     //.$GLOBALS[‘ecs’]->table(‘goods’).”as g on c.goods_id=g.goods_id  “;
    $data = $GLOBALS[‘db’] -> getAll($sql2);
     print_r($data);
    if($data){
        foreach ($data as $k=>$v){
            $sql=”delete from”.$GLOBALS[‘ecs’]->table(‘cart’).”where goods_id = ‘”.$v[‘goods_id’].”‘”;  
             $GLOBALS[‘db’] -> query($sql);  
          
     }
}

 

标签:, ,

转载请注明来源蓝普网络并以链接形式标明本文地址
本文链接: http://www.wbphp.cn/html/y05/6098.html

作者:牡丹网景 | 日期:2013-05-07 | 分类:新闻中心 | 评论:0 条 | 浏览:165


上一篇:
下一篇:

发表评论

*

* 以便邮件回复


给我汇款 | 合作流程 | 看看我们 | 加入我们 Copyright 2008-2016 php外包与洛阳php培训服务商. Some Rights Reserved. 豫ICP备12025288号-1