我正在为项目制作购物车脚本。购物车已经创建,但现在我正在查询购物车中的产品是否已插入订单表。但是当我这样做时,每件产品都是自己的order_id
,是否有可能从购物车中提供相同的order_id
产品?
将产品插入订单表的查询:
function cart() {
global $query;
global $query2;
$total = 0;
$total2 = 0;
foreach($_SESSION as $name => $value) {
if ($value>0) {
if (substr($name, 0, 5)=='cart_') {
$id = substr($name, 5, (strlen($name)-5));
$get = mysql_query('SELECT id, partnr, specs, price FROM parts WHERE id='.mysql_real_escape_string($id));
while ($get_row = mysql_fetch_assoc($get)) {
$sub = $get_row['price']*$value;
echo $get_row['partnr'].' x '.$value.' @ €'.number_format($get_row['price'], 2). ' = €'.number_format($sub, 2).' <a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?toevoegen2='.$id.'">[+]</a> <a href="cart.php?delete='.$id.'">[Delete]</a> <br/>';
if(isset($_POST['behandelen'])){
$partnr=$get_row['partnr'];
$price=$get_row['price'];
$datum=date("Y-m-d H:i:s");
$gebruikersnaam = $_REQUEST['gebruikersnaam'];
$query = "UPDATE parts set hoeveelheid = hoeveelheid - '$value' WHERE id = '$id'";
$query2= "INSERT INTO orders(partnr, price, hoeveelheid, betaaldatum)VALUES('$partnr', '$price', '$value', '$datum')";
}
mysql_query($query);
mysql_query($query2);
}
}
$total += $sub; //totaalprijs exclusief btw
$total2 += $sub*1.21; //berekening inclusief btw van 21%
$btw = $total2-$total;
}
}
if ($total==0) {
echo "Uw winkelwagen is leeg.";
}
else {
global $lang;
echo $lang['CART_SUBTOTAL'], '€'.number_format($total, 2); echo "<br/>";
echo $lang['CART_BTW'], '€'.number_format($btw, 2); echo "<br/>";
echo $lang['CART_TOTAL'], ' €'.number_format($total2, 2); //prijs inclusief btw wordt weergegeven op de site
}
}
sql查询如下所示:query2= "INSERT INTO orders(partnr, price, hoeveelheid, betaaldatum)VALUES('$partnr', '$price', '$value', '$datum')";
我希望有人可以给我任何建议,
提前致谢!
答案 0 :(得分:2)
您的数据库设置错误,因此您有订单,订单包含商品。 我会创建一个新表来包含有关订单的详细信息,当前表确实应该重命名为order_items。
在订单表中,您可以添加有关客户/交货详情的详细信息? 然后在订单和order_items之间会有一个foriegn键。
即
Orders (table)
order_id - primary key - auto increment.
other_fields....................
Order_items (table 2)
order_item_id - primary key - auto inc
order_id - foreign key
details about the order item - e.g quantity
这应该指向正确的方向。
答案 1 :(得分:0)
为什么要将相同的产品ID添加到产品数量中?
您可以做的是为每个独特的产品添加一个独特的通用产品ID,例如,品牌x的牙膏,规格为y,价格z应该具有相同的通用产品ID。然后,您可以让用户将它们添加到购物车。
购物车将具有另一个唯一ID,并且存储在数据库中的所有产品将具有相同的购物车ID。因此,购物车中订购或存储的所有商品都将具有相同的购物车ID,但产品ID不同,以便您可以获取有关该产品的所有信息。
你可以这样做 -
(partnr, price, hoeveelheid, betaaldatum, productID, cartID)VALUES
('$partnr', '$price', '$value', '$datum', someID, anotherID)";
还应该有另一个表格包含所有购物车信息,另一个表格包含产品信息
答案 2 :(得分:0)
您只应在订单表中插入一个新行。这将给你order_id。
创建另一个名为“orders_products”的表。在此表中插入每个产品,例如:
orders_products_id order_id product_id quantity
1 5 8 1
2 5 7 2
3 5 12 1
正如您所看到的,order_id为5,但每行都有不同的产品。
答案 3 :(得分:0)
我建议您创建一个桥名称&#34; Order_Items&#34;订单和产品表之间的属性,如Order_ID,Product_Id,Quantity,Price等。