graham23s Posted March 8, 2008 Share Posted March 8, 2008 Hi Guys, my shopping cart logic seems toi be a wee bit off, the first 2 vars: $product_id and $quantity are coming from the "add to cart" form. can i improve the top half of the code mainly just after i grab the GET's i think i may have over complicated it, the bottom half updating and deleting works great, just the top half seems to not add some items but does others. <?php // standard header // print("<div class=\"subheader\"><div id=\"title\">Home > <span class=\"blue\">Items you have added to your shopping cart</span></div>You can delete and update your shopping cart as you wish.</div>"); // check for the users logged in session if there is none no items in the cart // if(!isset($_SESSION['id'])) { print("<div id=\"shopping_login_error\">We are sorry but you need to be logged in to add orders. you can login <a href=\"login.php\">here</a> or register <a href=\"register.php\">here</a>."); include("inc/footer.php"); exit; } // they are logged in so insert and display the cart items // // firstly insert the items into the database // // get vars // $product_id = $_GET['product_id']; $quantity = $_GET['q']; echo "(<b>$product_id</b>) (<b>$quantity</b>)"; // session var // $var_loggedinuserid = $_SESSION['id']; // do some checking on the gets // //if(!isset($product_id) || !isset($quantity)) //{ // display_error("Oops, an errors had occured."); //} // do a quick check to see if the product has already been added if so just update the quantity // $query_already_inserted = "SELECT `product_id`,`quantity` FROM `fcp_orders` WHERE `product_id`='$product_id'"; $results_already_inserted = mysql_query($query_already_inserted); echo $query_already_inserted; // already in the cart ? // $already_in_cart = mysql_num_rows($results_already_inserted); // do the math // $row_quantity = mysql_fetch_array($results_already_inserted); // current quantity // $cur_qty = $row_quantity['quantity']; // new quantity // $new_quantity = $cur_qty + $quantity; if($already_in_cart > 0) { // just update the quantity // $queryqty = mysql_query("UPDATE `fcp_orders` SET `quantity`='$new_quantity' WHERE `product_id`='$product_id'"); } else { //if($product_id == 0) //{ // //} else { // insert the products into mysql // $query_insertion = "INSERT INTO `fcp_orders` (`id`,`customer_id`,`product_id`,`quantity`,`date`) VALUES ('','$var_loggedinuserid','$product_id','$quantity',now())"; $results_insertion = mysql_query($query_insertion); echo $query_insertion; // do a quick javascript refresh // //print('<script type="text/javascript">window.location = "shoppingcart.php"</script>'); // } } // now query the database to see what the logged in user has added // $query_cart = "SELECT * FROM `fcp_orders` WHERE `customer_id`='$var_loggedinuserid'"; $result_cart = mysql_query($query_cart); // any results back // $num_products = mysql_num_rows($result_cart); // display if there is or isn't // if($num_products == 0) { print("<div align=\"left\" id=\"empty_shopping_cart\">Your shopping cart is empty. <img src=\"images/cartempty.gif\" alt=\"Your shopping cart is empty!\"></div>"); include("inc/footer.php"); exit; } else { // -- EMPTY -- // if($_GET['action'] == 'empty') { $customers_session_id = $_SESSION['id']; // delete the data from mysql // $query_empty_cart = mysql_query("DELETE FROM `fcp_orders` WHERE `customer_id`='$customers_session_id'"); // do a quick javascript refresh // print('<script type="text/javascript">window.location = "shoppingcart.php"</script>'); } // -- DELETE -- // if($_GET['action'] == 'delete') { // grab the vars // $customers_product_id = $_GET['productid']; $customers_session_id = $_SESSION['id']; // now we have the product id delete from mysql where product id is product id and logged in session id is customer id // $query_delete_cart = mysql_query("DELETE FROM `fcp_orders` WHERE `product_id`='$customers_product_id' AND `customer_id`='$customers_session_id'"); // do a quick javascript refresh // print('<script type="text/javascript">window.location = "shoppingcart.php"</script>'); } // -- UPDATE -- // if($_GET['action'] == 'update') { $product_id_to_update = $_POST['pid']; $quantity_to_update = $_POST['q']; foreach ($_POST['pid'] as $k => $prod) { $qty = $_POST['q'][$k]; $sql = mysql_query("UPDATE `fcp_orders` SET `quantity`='$qty' WHERE `product_id`='$prod'"); // do a quick javascript refresh // print('<script type="text/javascript">window.location = "shoppingcart.php"</script>'); } } // there is products there so display them // print("<form action=\"shoppingcart.php?action=update\" method=\"post\">"); print("<table width=\"95%\" class=\"shop_table\" border=\"1\" bordercolor=\"#3399CC\" cellpadding=\"5\" cellspacing=\"0\">\n"); print("<tr>\n"); print("<td align=\"center\" class=\"shop_header\">Image</td><td align=\"center\" class=\"shop_header\">Product</td><td align=\"center\" class=\"shop_header\" >Quantity</td><td align=\"center\" class=\"shop_header\">Total Price</td><td align=\"center\" class=\"shop_header\">Remove</td>\n"); print("</tr>\n"); print("<tr>\n"); // loop // while($row = mysql_fetch_array($result_cart)) { $product_id = $row['product_id']; $product_qty = $row['quantity']; // get the product information // $query_product_information = "SELECT * FROM `fcp_products` WHERE `id`='$product_id'"; $result_product_information = mysql_query($query_product_information); // make an array // $rows = mysql_fetch_array($result_product_information); // more vars // $product_name = $rows['product_name']; $product_price = $rows['product_price']; // math // $total_price = $product_price * $product_qty; // number format // $total_price = number_format($total_price,2); // session in a var // $session_id = $_SESSION['id']; // put the total quantity in mysql besides the order // $finalupdate = mysql_query("UPDATE `fcp_orders` SET `quantity_total`='$total_price' WHERE `product_id`='$product_id'"); print("<td width=\"5%\" align=\"center\"><img src=\"images/image.gif\" alt=\"Product Image\" title=\"Product Image\" /></td><td align=\"center\"><a class='smart_links' href=\"productinformation.php?productid=$product_id\">$product_name</a><br />You have ordered <b>$product_qty</b> at £$product_price each.</td><td align=\"center\"><input type=\"hidden\" name=\"pid[]\" value=\"$product_id\"><input type=\"text\" name=\"q[]\" size=\"5\" value=\"$product_qty\"></td><td width=\"10%\" align=\"center\">£$total_price</td><td align=\"center\" width=\"5%\"><a href=\"shoppingcart.php?productid=$product_id&customerid=$session_id&action=delete\"><img src=\"images/button_delete.gif\" border=\"0\"></a></td></tr>\n"); } // get the total price due // $query_price = "SELECT SUM(quantity_total) as `total` FROM `fcp_orders` WHERE `customer_id`='$session_id'"; $results_price = mysql_query($query_price); $r = mysql_fetch_array($results_price); // vars // $total_due = $r['total']; // shipping // $shipping_costs = 10; // total owed [make this a function] // $total_owed = $total_due + $shipping_costs; // number format // $total_owed = number_format($total_owed, 2); $total_due = number_format($total_due, 2); // end the table // print("<tr>"); print("<td colspan=\"4\" align=\"right\">empty your shopping cart <a href=\"shoppingcart.php?action=empty\" onclick=\"return confirm('You sure you want to empty your cart?')\"><img src=\"images/cross.gif\" border=\"0\"></a></td><td align=\"right\"><input type=\"submit\" name=\"submit\" class=\"add_to_cart_button\" value=\"Update Cart\"></td>"); print("</tr>"); print("<tr>"); print("<td colspan=\"4\" align=\"right\">Sub Total -</td><td align=\"left\"><b>£$total_due</b></td>"); print("</tr>"); print("<tr>"); print("<td colspan=\"4\" align=\"right\">Shipping -</td><td align=\"left\"><b>£$shipping_costs</b></td>"); print("</tr>"); print("<tr>"); print("<td colspan=\"4\" align=\"right\">Total -</td><td align=\"left\"><b>£$total_owed</b></td>"); print("</tr>"); print("</table></form>"); // buttons // print("<form action=\"checkout.php\" method=\"post\">"); print("<table width=\"95%\" border=\"0\">"); print("<tr>"); print("<td align=center><img src=\"images/cards.bmp\" alt=\"Payments we accept!\"></td>"); print("<td align=center><input type=\"submit\" value=\"Proceed to Checkout\" style=\"font-weight: bold; font-size: 120%;\"></td>"); print("</table>"); print("</form>"); //} } // end quantity else // /* // this code deletes orders from the database older than 1 day // $yesterday = date('Y-m-d H:i:s',mktime(0,0,0, date('m'), date('d') - 1, date('Y'))); $delete_cart_entries = mysql_query("DELETE FROM `fcp_orders` WHERE `date` < '$yesterday'"); */ ?> thanks for any input Graham Link to comment https://forums.phpfreaks.com/topic/95119-shopping-cart-form-logic/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.