Dale
Dale

Reputation: 71

Codeigniter 3 - adding multiple arrays to a session

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

Answers (3)

Rizwan
Rizwan

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

Hikmat Sijapati
Hikmat Sijapati

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

Harsh Barach
Harsh Barach

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

Related Questions