首页 > 解决方案 > 将购物车的值存储在数据库中

问题描述

我正在 Codeigniter 中开发一个电子商务项目。我希望任何用户都可以在购物车中添加产品,但是当他想结账时,他必须登录网站,然后才能结账。但是当我在用户登录后尝试这个时,购物车数据丢失了。如何在结帐前存储数据,以免购物车中的数据丢失。为了解决这个问题,我尝试了另一种将购物车数据存储在数据库中的方法。为了将购物车数据存储到数据库中,我使用了以下代码:- 控制器代码

class Shopping_Cart extends CI_Controller {
public $cart_id = "";
 function add_to_cart()
      {$data = array(
                        'id'    => $this->input->post('product_id'), 
                        'name'  => $this->input->post('product_name'), 
                        'price' => $this->input->post('product_price'), 
                        'qty'   => 1, 
                        "image" =>$this->input->post('product_image'), 
                      );
            $this->cart->insert($data);
       if($this->cart_id)
        {
            $this->updatecarttodb($this->cart->contents());                     
        }
        else
        {           
            $this->addcarttodb($this->cart->contents());
        }       

         echo $this->view_cart(); 
       }
private function addcarttodb($cartdata)
    {
        $cart_id = $this->Cart_model->addtoCart($cartdata);
        $cookie = array(
                            'name'   => 'cart_id',
                            'value'  => $cart_id,
                            'expire' => (365*60*60*24),
                            'domain' => '',
                            'path'   => '/',
                            'prefix' => '',
                            'secure' => FALSE
                        );
        $this->input->set_cookie($cookie);
    }
    private function updatecarttodb($cartdata)
    {
        $this->Cart_model->updateCart($this->cart_id,$cartdata);        
    }

型号代码

function addtoCart($cartData)
{
  $cartData = array("cart_data"=>serialize($cartData));
  $this->db->insert('tbltmpcart',$cartData);     
  return $this->db->insert_id();
}

function updateCart($cart_id,$cartData)
{
  if($cart_id == "")return;
  if($cartData != "")
   {
     $cartData = serialize($cartData);
   }
    $updateData = array("cart_data"=>$cartData);
    $this->db->where("cart_id",$cart_id);   
    $this->db->update('tbltmpcart',$updateData);           
}

function getCartContents($cart_id)
{
  $this->db->where("cart_id",$cart_id);
  $result = $this->db->get('tbltmpcart');
  if($result && $result->num_rows())
  {
    $retdata = $result->result_array();                
    if($retdata[0]['cart_data'] != "1" && $retdata[0]['cart_data'] != "")
    {
      return @unserialize($retdata[0]["cart_data"]);
    }     
  }
  return "";
}

我的问题是 $cart_id 值不保留它丢失了,所以我不能进一步使用。如果代码中有任何问题,请尝试更正我的代码。

标签: phpcodeigniter-3cart

解决方案


推荐阅读