gongpex Posted November 1, 2012 Share Posted November 1, 2012 Hello everyone, please see these images on bellow : When I click "BUY NOW", then I login into account it's successful to added to database. And this the result : But when I buy same or other product like this : it's result like this : it cause the product quantity and total price became 0 and sadly the new product cannot be added. and this my code : if($_SESSION['cart']) { $show_order = mysql_query("select * from order where o_user='$m_user'and o_status='O'"); $order_all = mysql_num_rows($show_order); foreach($_SESSION['cart'] as $product_id => $quantity) { $sql = sprintf("SELECT p_id, p_title, p_price, p_image FROM product WHERE p_id = %d;", $product_id); $result = mysql_query($sql); if(mysql_num_rows($result) > 0 && $order_all == 0 && $_SESSION['m_user']) { list($p_id, $p_title, $p_price, $p_img) = mysql_fetch_row($result); $line_cost = $p_price * $quantity; $total = $total + $line_cost; mysql_query("insert into order(pid,o_user,o_title,o_img,o_price,o_qty,o_total) values ('$p_id','$m_user','$p_title','$p_img','$p_price','$quantity','$line_cost')"); } else if(mysql_num_rows($result) > 0 && $order_all !== 0){ mysql_query("update order set o_qty ='$quantity',o_total='$line_cost' where o_user='$m_user' and o_status='O'"); } }} E : I know the cause of change the price and quantity into 0 and the new product can't be added because this code: if(mysql_num_rows($result) > 0 && $order_all == 0 && $_SESSION['m_user']) { list($p_id, $p_title, $p_price, $p_img) = mysql_fetch_row($result); $line_cost = $p_price * $quantity; $total = $total + $line_cost; mysql_query("insert into order(pid,o_user,o_title,o_img,o_price,o_qty,o_total) values ('$p_id','$m_user','$p_title','$p_img','$p_price','$quantity','$line_cost')"); } else if(mysql_num_rows($result) > 0 && $order_all !== 0){ mysql_query("update order set o_qty ='$quantity',o_total='$line_cost' where o_user='$m_user' and o_status='O'"); } Q : But how to fix this code, in short how to create sql/mysql code so that : Case1 : if the product not exist on user account / database , it will do : mysql_query("insert into order(pid,o_user,o_title,o_img,o_price,o_qty,o_total) values ('$p_id','$m_user','$p_title','$p_img','$p_price','$quantity','$line_cost')"); so that when user buy new product it can be added though user has buy some product before. and Case2 : if the product already exist on user account / database , it will do : mysql_query("update order set o_qty ='$quantity',o_total='$line_cost' where o_user='$m_user' and o_status='O'"); so that when user buy same product it can be change the quantity and total price, based on product that user had buy before. ?? Important : I buy product when in condition not login in other word as anonymous, and this image shown after I logged as user. so, image on above displayed based on database not on session. please help me...... Thanks Link to comment Share on other sites More sharing options...
niche Posted November 1, 2012 Share Posted November 1, 2012 (edited) We probably can't give you the answer you need except to say your code is doing what you told it to do not what you intended it to do unless you're getting an error message. . So, when I have similar situations, I make sure the expected value inputs are present. If so, go through each line of code to decide why the math doesn't add-up. If this is your code it shouldn't be too hard. Edited November 1, 2012 by niche Link to comment Share on other sites More sharing options...
justsomeguy Posted November 1, 2012 Share Posted November 1, 2012 You're checking if the user has any products at all in the order. If they do, you only update, never insert. So if they have 2 products already, and add another one, you're only updating and not inserting. You need to check if each product is in the order instead of checking if there are any products in the order at all. Link to comment Share on other sites More sharing options...
gongpex Posted November 2, 2012 Author Share Posted November 2, 2012 You need to check if each product is in the order instead of checking if there are any products in the order at all. Yes of course, but I don't know how to check it, if I using : mysql_query("select * from order where o_user='$m_user'and o_status='O' and p_id='$product code'"); note : $product code just an example. it can only check once, Q : how about product that ordered by user on account if the product more than 1? please help me Thanks Link to comment Share on other sites More sharing options...
justsomeguy Posted November 2, 2012 Share Posted November 2, 2012 How about you get all products in the order and loop through them to find out if the product you're trying to add is already there? Link to comment Share on other sites More sharing options...
gongpex Posted November 3, 2012 Author Share Posted November 3, 2012 I think I need to check my code, yesterday I found some code that wrong.____________________________________________________________________________ off : your photo on avatar is in your home or other place like your office or etc? thanks Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now