I have this shopping cart page coded, but i am clueless about how to acces the product id from session in another page? Anyone please help me! I'm beginner so if you please give me example code too it'd help me a lot.
<?php
session_start();
$product_ids = array();
//session_destroy();
//check if Add to Cart button has been submitted
if(filter_input(INPUT_POST, 'add_to_cart')){
if(isset($_SESSION['shopping_cart'])){
//keep track of how mnay products are in the shopping cart
$count = count($_SESSION['shopping_cart']);
//create sequantial array for matching array keys to products id's
$product_ids = array_column($_SESSION['shopping_cart'], 'id');
if (!in_array(filter_input(INPUT_GET, 'id'), $product_ids)){
$_SESSION['shopping_cart'][$count] = array
(
'id' => filter_input(INPUT_GET, 'id'),
'name' => filter_input(INPUT_POST, 'name'),
'price' => filter_input(INPUT_POST, 'price'),
'quantity' => filter_input(INPUT_POST, 'quantity')
);
}
}
else { //if shopping cart doesn't exist, create first product with array key 0
//create array using submitted form data, start from key 0 and fill it with values
$_SESSION['shopping_cart'][0] = array
(
'id' => filter_input(INPUT_GET, 'id'),
'name' => filter_input(INPUT_POST, 'name'),
'price' => filter_input(INPUT_POST, 'price'),
'quantity' => filter_input(INPUT_POST, 'quantity')
);
}
}
?>
Use the same code you have here on the other page to get the product_ids
//other page
session_start();
$product_ids = array_column($_SESSION['shopping_cart'], 'id');
Related
hello I am trying to create a simple shopping cart for my school project the problem I have was the session array is not creating and array with information. So I can't add items on my cart. here is my code.
if(isset($_POST['add_to_cart'])) {
if(isset($_SESSION['cart'])) {
$session_array_id = array_column($_SESSION['cart'], 'id');
if(!in_array($_GET['id'], $session_array_id)) {
$session_array = array(
'id' => $_GET['id'],
'name' => $_POST['name'],
'price' => $_POST['price'],
'quantity' => $_POST['quantity']
);
$_SESSION['cart'][0]= $session_array;
}
}else {
$session_array = array(
'id' => $_GET['id'],
'name' => $_POST['name'],
'price' => $_POST['price'],
'quantity' => $_POST['quantity']
);
$_SESSION['cart'][] = $session_array;
}
the picture above is just overwriting my selection everytime I press add to cart it won't stack up new item on top of the other. so basically the session array stays 0 all the time.
Pls somebody help me figure this out thank you so much!
When you do $_SESSION['cart'][0]= $session_array; you set it always on index 0. Try
array_push($_SESSION['cart'], $session_array);
Also this is not sticking $_SESSION['cart'][] = $session_array;
Always trust in array push.
Hi I have an assignment of making add to cart foods of different restaurants but there is a bit problem where adding restrictions in adding food. My problem is when I add to cart food all of the restaurants can be added I wanted to have a 1 transaction per restaurant where when i add to cart a different restaurant food it will prompt a message that i have items in my cart in a different restaurant if i wanted to continue the cart will be unset and will add the new food in my cart. Please help thanks
I don't know where to place my if else statement to restrict the adding of food
//check if Add to Cart button has been submitted
if(filter_input(INPUT_POST, 'add_to_cart')){
if(isset($_SESSION['shopping_cart'])){
//keep track of how many products are in the shopping cart
$count = count($_SESSION['shopping_cart']);
//create sequential array for matching array keys to products id's
$product_ids = array_column($_SESSION['shopping_cart'], 'Product_ID');
if(!in_array(filter_input(INPUT_GET, 'p'), $product_ids)){
$_SESSION['shopping_cart'][$count] = array (
'Restaurant_ID' => filter_input(INPUT_GET, 'r'),
'Product_ID' => filter_input(INPUT_GET, 'p'),
'name' => filter_input(INPUT_POST, 'name'),
'price' => filter_input(INPUT_POST, 'price'),
'quantity' => filter_input(INPUT_POST, 'quantity')
);
}
else { //product already exists, increase quantity
//match array key to id of the product being added to the cart
for ($i = 0; $i < count($product_ids); $i++){
if($product_ids[$i] == filter_input(INPUT_GET, 'p')){
//add item quantity to the existing product in the array
$_SESSION['shopping_cart'][$i]['quantity'] += filter_input(INPUT_POST, 'quantity');
}
}
}
}
else {//if shopping cart doesn't exist, create first product with array key 0
//create array using submitted form data, start from key 0 and fill it with values
$_SESSION['shopping_cart'][0] = array (
'Restaurant_ID' => filter_input(INPUT_GET, 'r'),
'Product_ID' => filter_input(INPUT_GET, 'p'),
'name' => filter_input(INPUT_POST, 'name'),
'price' => filter_input(INPUT_POST, 'price'),
'quantity' => filter_input(INPUT_POST, 'quantity')
);
}
}
}
?>
For a purpose im passing woocommerce values to an array like this :
'name' => $_POST['billing_first_name'],
'phone' => $_POST['billing_phone'],
'email' => $_POST['billing_email'],
'note' => $_POST['order_comments'],
Now I'm stuck finding one of the values. The name of the ordered product.
'subject' => HERE GOES THE PRODUCT NAME VALUE,
i have been looking everywhere, tried some stuff but nothing worked so far.
I'm working in functions.php
Retrieved the name like this
// Retrieve order name
global $woocommerce;
$items = $woocommerce->cart->get_cart();
foreach($items as $item => $values) {
$_product = $values['data']->post;
}
//
and then i called it like this
'subject' => $_product->post_title,
I am doing a shopping cart using code-igniter. While I can do the add cart functions, I'm somewhat confused with how to update them with regards to database. All I want is when I change the item quantity in the cart and click update ,both the cart and database must be updated for that particular item.I tried to do it but couldn't get it.Can someone please enlighten me what to do?
controller code
$this->load->model('user_m');
$result['query'] = $this->user_m->get($id); // inserts coresponing item
foreach ($result['query'] as $row)
$id = $row->pid;
$qty = $a;
$quan=$row->quantity;
$price = $row->pprice;
$name = $row->pname;
$q=$quan-$a; // for remainig stock i.e total qty-user qty
$data = array(
'id' => $id,
'qty' => $qty,
'price' => $price,
'name' => $name,
'stock' =>$q
);
$this->cart->insert($data);
$this->load->model('user_m');
$result['qry'] = $this->user_m->up_cart($id,$q);
redirect($_SERVER['HTTP_REFERER']);
}
just tell me how to update pls!
when ever you add any product in cart, it will generate an uniq row ID and that will be unique for each and every product and hence you need to update quantity by that row ID
$data = array(
'rowid' => 'b99ccdf16028f015540f341130b6d8ec',
'qty' => 3
);
$this->cart->update($data);
// Or a multi-dimensional array
$data = array(
array(
'rowid' => 'b99ccdf16028f015540f341130b6d8ec',
'qty' => 3
),
array(
'rowid' => 'xw82g9q3r495893iajdh473990rikw23',
'qty' => 4
),
array(
'rowid' => 'fh4kdkkkaoe30njgoe92rkdkkobec333',
'qty' => 2
)
);
$this->cart->update($data);
Now you want to know about how you will get row id.
$cart=$this->cart->contents();
it will return whole array of cart and when you listing it on webpage, please associate row id with quantity text box to update that particular product.
please check following url:
https://ellislab.com/codeigniter/user-guide/libraries/cart.html
I'd like to build a simple shopping cart using arrays. I need to display each unique item in the shopping cart aswell as the quantity of each item along side.
My initial cart array might look like this:
$cart=
array(
array(2003,100,"Table")
,array(2003,100,"Table")
,array(2003,100,"Table")
,array(2004,200,"Chair")
,array(2004,200,"Chair")
);
The first value in each array is the product_id, then the price & then the product name.
How do I print each unique item once aswell as the quantity of each along side?
Thanks in advance.
$new_cart = array();
foreach($cart as $product) {
if(!isset($new_cart[$product[0]])) {
$new_cart[$product[0]] = array('quantity' => 1, 'label' => $product[2], 'price' => $product[1]);
}
else {
$new_cart[$product[0]]['quantity']++;
}
}
I strongly suggest using associative arrays for this though. Your problem is the way you are storing the values. Try using something like this:
$cart_items = array(
2004 => array('quantity' => 3, 'label' => 'Leather Chair', 'price' => 200),
2901 => array('quantity' => 1, 'label' => 'Office Desk', 'price' => 1200),
);
When a user updates a quantity or adds an existing product simply increment the quantity.
You could simply iterate the array and use the product ID as key to count the amounts:
$amounts = array();
foreach ($cart as $item) {
if (!isset($amounts[$item[0]])) $amounts[$item[0]] = 0;
$amounts[$item[0]]++;
}
But it would be easier if your cart just stores the product IDs and amounts, so:
array(
2003 => 3,
2004 => 2
)
This is actually what the algorithm above is doing. But with this, you have all the information you need (product ID and amount).