designrandom Posted September 27, 2009 Share Posted September 27, 2009 Can I use a While Loop on a session array? What I mean is, can I do this, but for an array result instead of a mysql query result? while ($row = mysql_fetch_array ($result)) { echo 'output goes here'; } How would I do this for a session array that looks like this? I need to get the $sessID for each instance of the shopping cart session. $_SESSION['cart'][$sessID] = array ('quantity' => 1, 'price' => $prodPrice, 'prodName' => $prodName, 'handle' => $handle); There is a good chance that I'm actually making this very difficult for myself. If any one has a better idea of how to do the following, I would love to hear it! Thanks... I am building a php/mysql shopping cart for a cricket website. When the website user adds a cricket bat to the shopping cart they must select some options: Bat size, Handle size, Bat Edges, Bat Weight, Etc... There are between 6 and 10 options depending on the chosen cricket bat. I add the details to the shopping cart session like this: $sessID = uniqid(); $prodID = (int) $_POST['prodID']; $prodName = $_POST['prodName']; $prodPrice = $_POST['prodPrice']; $size = $_POST['size']; $handle = $_POST['handle']; $weight = $_POST['weight']; $edges = $_POST['edges']; $_SESSION['cart'][$sessID] = array ('quantity' => 1, 'price' => $prodPrice, 'prodName' => $prodName, 'handle' => $handle); On the viewcart.php page I intend on outputting the price and product name from the shopping cart arrays. The problem is, I don;t know how to set a while loop for all the instances of $sessID? Any thoughts on this would be greatly appreciated. Thanks Link to comment https://forums.phpfreaks.com/topic/175699-using-while-loops-on-session-arrays-please-help/ Share on other sites More sharing options...
MadTechie Posted September 27, 2009 Share Posted September 27, 2009 do you mean something like this $_SESSION['cart'][$sessID] = array(); // set as an array //add to the array $_SESSION['cart'][$sessID][] = array ('quantity' => 1, 'price' => $prodPrice, 'prodName' => $prodName, 'handle' => $handle); echo "<pre>"; //loop thought the array foreach($_SESSION['cart'][$sessID] as $Item) { print_r($Item); } echo "</pre>"; Link to comment https://forums.phpfreaks.com/topic/175699-using-while-loops-on-session-arrays-please-help/#findComment-925864 Share on other sites More sharing options...
designrandom Posted September 27, 2009 Author Share Posted September 27, 2009 MadTechie, Thanks for your super quick reply - I appreciate your help. I tried your code, but got the following error: Warning: Invalid argument supplied for foreach() in /home/timcarl/public_html/viewcartoption.php on line 9 I suspect that it's because $sessID no longer exists. After adding the items to the shopping cart, I go to a different page (viewcart.php) to view the contents of the cart and checkout. I have the following code at the top of my viewcart page: foreach ($_SESSION['cart'] as $sessID => $value) { $allsessids .= $sessID; } The problem is, I now have one massive number in the variable $allsessids, instead of a list of a list of the shopping cart session ID's. When I come to output the shopping cart sessions, how would you do it? I thought a While Loop was the best way, but I'm not sure how to code it. I want something like this: echo '<td>'.$_SESSION['cart'][$sessID]['quantity'].'</td><td>'.$_SESSION['cart'][$sessID]['price'].'</td>'; Which would give me a table of results of everything in my shopping cart: Item 1 - £100 - quantity:1 Item 2 - £120 - quantity: 1 I hope this makes sense. Thanks again for your quick response. Link to comment https://forums.phpfreaks.com/topic/175699-using-while-loops-on-session-arrays-please-help/#findComment-925873 Share on other sites More sharing options...
MadTechie Posted September 27, 2009 Share Posted September 27, 2009 I don't believe your even need $sessID in the array, unless theirs a purpose for it ? personally i would do this $_SESSION['cart'] = array(); // set as an array //add to the array $_SESSION['cart'][] = array ('quantity' => 1, 'price' => $prodPrice, 'prodName' => $prodName, 'handle' => $handle); So in my example (below) $item is the array foreach ($_SESSION['cart'] => $item) { echo '<td>'. $item['quantity'].'</td><td>'. $item['price'].'</td>'; } personally I use foreach on arrays and while with SQL queries, I find it easier that way.. as I don't know when the query will end but with an array i don't want to check if I'm on the last item! Link to comment https://forums.phpfreaks.com/topic/175699-using-while-loops-on-session-arrays-please-help/#findComment-925892 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.