将多个值存储在一个ID中

时间:2015-10-19 08:37:03

标签: php mysql cart

我正在为项目制作购物车脚本。购物车已经创建,但现在我正在查询购物车中的产品是否已插入订单表。但是当我这样做时,每件产品都是自己的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.' @ &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')";

我希望有人可以给我任何建议,

提前致谢!

4 个答案:

答案 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等。