2015-10-19 52 views
0

我正在为项目制作购物车脚本。购物车已创建,但现在我正在查询购物车中的商品是否插入订单表中。但是当我这样做时,每个产品都得到它自己的order_id,是否有可能从购物车的每个产品都相同order_id将多个值存储在一个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.' @ &euro;'.number_format($get_row['price'], 2). ' = &euro;'.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'], '&euro;'.number_format($total, 2); echo "<br/>"; 
    echo $lang['CART_BTW'], '&euro;'.number_format($btw, 2); echo "<br/>"; 
    echo $lang['CART_TOTAL'], ' &euro;'.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')";

我希望有人可以给我一些建议,

谢谢提前!

回答

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 

这应该指向正确的方向。

+0

谢谢你的答案理查德,我将创建一个新的表之间的桥名“ORDER_ITEMS”并编辑现有的。 – niekerd

+0

嗨,你可以标记这是正确的吗? –

0

为什么要将相同的产品ID添加到产品数量?

你可以做的是 - 为每一种独特的产品添加一个唯一的通用产品ID,例如,品牌x的牙膏的规格y和价格z应该具有相同的通用产品ID。然后你可以让用户将它们添加到购物车。

购物车将有另一个唯一的ID,并且存储在数据库中的所有产品将具有相同的购物车ID。因此,订购或存储在购物车中的所有产品都将具有相同的购物车ID,但具有不同的产品ID,因此您可以获取有关该产品的所有信息。

你可以做这个 -

(partnr, price, hoeveelheid, betaaldatum, productID, cartID)VALUES 
('$partnr', '$price', '$value', '$datum', someID, anotherID)"; 

还应该包含所有车信息的另一个产品信息

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,但也有在各行不同的产品。

+0

嘿错误,我应该在新表中插入项目的查询? – niekerd

+0

这将是mysql_query(“insert into orders_products(orders_products_id,order_id,product_id,quantity)values('',$ order_id,”。$ get_row ['id']。“,1)”);但请记住,您需要先定义一个新订单。因此,在产品循环之前,在“订单”中插入一个新行。然后写:$ order_id = mysql_insert_id(); <<这是order_id。 –

0

我建议你创建你的订单和产品表的属性,如的order_id,product_id,数量,价格等