Reputation: 71
trying to make a cart in codeigniter with the session class.
public function add_to_cart()
{
$cartitem = array(
'id' => '1234',
'product' => 'butt scratcher',
'qty' => 1,
'price' => 2.99
);
$this->session->set_userdata('cart',$cartitem);
print_r($this->session->cart);
}
This just overrides the current array, I guess i have to find the current index and add 1 to it but how do i do
$_SESSION['cart'][$i]
Using codeigniters session class
$this->session->set_userdata['cart??',$data??']
Upvotes: 0
Views: 2219
Reputation: 79
function insert_order($products)
{
$data = array(
'product_id'=> $products['product_id'],
'product_qty' => $products['product_qty'],
'product_price' => $products['product_price'],
'product_name' => $products['product_name'],
'product_image' => $products['product_image'],
'address'=>$products['address']
);
//$this->db->insert('order', $data);
if($this->session->userdata('cart_product1')==false) {
$this->session->set_userdata('cart_product1', $data);
}
elseif ($this->session->userdata('cart_product1')==true && $this->session->userdata('cart_product2')==false){
$this->session->set_userdata('cart_product2', $data);
}
elseif ($this->session->userdata('cart_product1')==true && $this->session->userdata('cart_product2')==true && $this->session->userdata('cart_product3')==false){
$this->session->set_userdata('cart_product3', $data);
}
elseif ($this->session->userdata('cart_product1')==true && $this->session->userdata('cart_product2')==true && $this->session->userdata('cart_product3')==true && $this->session->userdata('cart_product4')==false){
$this->session->set_userdata('cart_product4', $data);
}
elseif ($this->session->userdata('cart_product1')==true && $this->session->userdata('cart_product2')==true && $this->session->userdata('cart_product3')==true && $this->session->userdata('cart_product4')==true && $this->session->userdata('cart_product5')==false){
$this->session->set_userdata('cart_product5', $data);
}
elseif($this->session->userdata('cart_product1')==true && $this->session->userdata('cart_product2')==true && $this->session->userdata('cart_product3')==true && $this->session->userdata('cart_product4')==true && $this->session->userdata('cart_product5')==true) {
//print_r("You are not allowed to buy more than 5 items at a time");exit;
$this->load->view('quantityAccessPage');
}
}
This is a Model for shopping cart adding Multiple arrays to session codeigniter I have not added the controller and view suppose u can do that its not a good approach but fullfilled my requirement cause I had to add only 5 products but codeigniter can take multiplt arrays in session
Upvotes: 1
Reputation: 6969
Try like this. $this->session->set_userdata($cartitem)
sets key
as session variable and value
as corresponding session value
.
public function add_to_cart()
{
$cartitem = array(
'id' => 1234,
'product' => 'butt scratcher',
'qty' => 1,
'price' => 2.99
);
$this->session->set_userdata($cartitem);
}
Then
echo $this->session->userdata('id');//prints 1234
Upvotes: 0
Reputation: 957
To add the multiple arrays into session without overriding the current one, you have to first retrieve session data which is already set using $this->session->userdata('session_id');
.
After that you should add your current array into retrieved session array and then set your combined new array into session using $this->session->set_userdata($newarray);
.
And if you are not able to set array in session then convert it into json using json_encode() then set into session.
Just to guide you that you can also use cookie
to perform same task.
Upvotes: 3