Drew2 Posted December 25, 2020 Report Share Posted December 25, 2020 (edited) So here seems to be the stages leading up to $_SESSION['cart'] being set: First, someone clicks a link generated by m_products 'cart.php? id=' . $product['id'] Second, cart.php sees the product id in the url (generated by someone clicking the above link), and calls this function in m_cart.php to add a product: $Cart->add($_GET['id']); Third, m_cart.php starts this function: public function add($id, $num = 1) public function add($id, $num = 1) { //setup or retrieve cart $cart = array(); if(isset($_SESSION['cart'])) { $cart = $_SESSION['cart']; } //check to see if item is already in cart if (isset($cart[$id])) { //if item is in cart $cart[$id] = $cart[$id] + $num; } else { // if item is not in cart $cart[$id] = $num; } $_SESSION['cart'] = $cart; } The section of code above that I have highlighted is where $_SESSION['cart'] is initially set. I was having trouble before, because I hadn't cleared the cart before running the public function add. As a result, every time I tested this line of code, I did so assuming the $_SESSION['cart'] was empty. But when I tested the code the first conditional kept resolving to true, as if the cart had already been set (even though I thought it hadn't been). At any rate, here is how $_SESSION['cart'] is set. The first two conditionals in public function add resolve to false: $_SESSION['cart'] has not been set yet (provided no previous items were added to the cart). And, if $_SESSION['cart'] hasn't been set yet, there won't be a key of $id in the variable $cart - as $cart is just a blank array. So, that means the last piece of code will fire: a previously blank array ($cart) will be given a key ([$id]) and a value of $num (which is just 1). Then, the information in variable $cart is assigned (given) to $_SESSION['cart']. Edited January 2, 2021 by Drew2 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.