son Posted September 30, 2009 Share Posted September 30, 2009 Having finally manage to make my shopping basket page work I found that when I re-load the page all data is lost and the user is confronted with message which comes up when no items have been added to page yet. Why does a reload loose all data? The working code is: if (isset($_REQUEST['do']) && ($_REQUEST['do'] == 'add')){ if (isset($_GET['id'])) { $id = (int) $_GET['id']; if ($id > 0) { $id_query = "SELECT product, price FROM products WHERE product_id = $id"; $id_result = mysqli_query ($dbc, $id_query); if (mysqli_num_rows($id_result) == 1) { list ($product, $price) = mysqli_fetch_array($id_result, MYSQLI_NUM); if (isset($_SESSION['cart'][$id])) { $_SESSION['cart'][$id]++; echo "<p>Another copy of the following item has been added to your quote page: $product with a price of £$price.</p>\n"; } else { $_SESSION['cart'][$id] = 1; echo "<p>The following item has been added to your quote page: $product with a price of £$price.</p>\n"; } } } }}elseif (isset($_REQUEST['do']) && ($_REQUEST['do'] == 'update')){ foreach ($_POST['qty'] as $k => $v) { $pid = (int) $k; $qty = (int) $v; if ($qty == 0) { unset ($_SESSION['cart'][$pid]); } elseif ($qty > 0) { $_SESSION['cart'][$pid] = $qty; } } echo "<p>The add to quote page has been updated.</p>";}if ($_SESSION['cart'] && !empty($_SESSION['cart'])){$cart_query = "SELECT product_id, product, price FROM products WHERE product_id IN ("; foreach($_SESSION['cart'] as $id => $v) { $cart_query .= (int) $id . ','; }$cart_query = substr ($cart_query, 0, -1) . ") ORDER BY product";$cart_result = mysqli_query ($dbc, $cart_query); if (mysqli_num_rows($cart_result) > 0) { echo "<table style=\"margin-top:15px;\">"; echo "<tr><th>Item</th><th>Description</th><th>Qty</th><th class=\"right\">Price</th></tr>"; echo "<form action=\"cart.php\" method=\"post\">"; echo "<input type=\"hidden\" name=\"do\" value=\"update\" />"; $total = 0; while ($row = mysqli_fetch_array($cart_result, MYSQLI_ASSOC)) { $price = $row['price']; $subtotal = $_SESSION['cart'][$row['product_id']]* $price; $total += $subtotal; $subtotal = number_format($subtotal, 2); echo "<tr><td>{$row['product']}</td><td>{$row['product']}</td><td><input type=\"text\" style=\"width: 2em\" name=\"qty[{$row['product_id']}]\" value=\"{$_SESSION['cart'][$row['product_id']]}\" /></td><td class=\"right\">£$price</td></tr>\n"; } echo "<tr><td colspan=\"3\" class=\"right noBorder\">Total:</td><td class=\"right\">£ " . number_format($total, 2) . "</td></tr>"; echo "<tr><td colspan=\"4\" class=\"noBorder\">Set an items quantity to 0 to remove it from add to quote page.</td></tr>"; echo "</table>"; echo "<div style=\"text-align:center;\"><button type=\"submit\" name=\"submit\" value=\"update\">Update cart</button></div>"; echo "</form>"; }}else{echo "<p>Currently there are no items added to this page.</p>";} Any helps, hints or kicks appreciated;-)Son Link to comment Share on other sites More sharing options...
Synook Posted September 30, 2009 Share Posted September 30, 2009 You don't seem to be starting the session anywhere, is that the entire script? Link to comment Share on other sites More sharing options...
son Posted September 30, 2009 Author Share Posted September 30, 2009 You don't seem to be starting the session anywhere, is that the entire script?You got me, many thanks. Forgot to include on top of presented script 'session_start();'. Just two more questions: I only have 'session_start();' on actual basket page (which works), but should/can I have it for each page? This always confused me. In addition, do you know on product page how to also pass quantitiy (from form field) with product id to cart page?Son Link to comment Share on other sites More sharing options...
Synook Posted October 1, 2009 Share Posted October 1, 2009 You need session_start() on all pages where you need to access $_SESSION. Link to comment Share on other sites More sharing options...
son Posted October 2, 2009 Author Share Posted October 2, 2009 You need session_start() on all pages where you need to access $_SESSION.Many thanks for your help...Son Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.