0

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??']

3 Answers 3

3

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.

Sign up to request clarification or add additional context in comments.

2 Comments

Thanks Harsh, all sorted now.
@Dale Glad to help you... :)
1

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

Comments

0

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

1 Comment

That is pretty much my code exactly, with the same issue, it will overwrite the existing data.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.