【问题标题】:Store multiple values in one id在一个 id 中存储多个值
【发布时间】:2016-01-17 12:57:03
【问题描述】:

我正在为一个项目制作购物车脚本。购物车已经创建,但现在我正在查询将购物车中的产品插入订单表的位置。但是当我这样做时,每个产品都有自己的order_id,是否可以为购物车中的每个产品提供相同的order_id

产品插入orders表的查询:

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')";

希望有人能给我任何建议,

提前致谢!

【问题讨论】:

    标签: php mysql cart


    【解决方案1】:

    您的数据库设置完全错误,因此您有一个订单,而一个订单有商品。 我会创建一个新表来包含有关订单的详细信息,并且当前表确实应该重命名为 order_items。

    在订单表中,您可以添加有关客户/交货详细信息的详细信息吗? 然后orders和order_items之间会有一个外键。

    即。

    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
    

    这应该为您指明正确的方向。

    【讨论】:

    • 感谢您的回答 Richard,我将创建一个新表并编辑现有表。
    【解决方案2】:

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

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

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

    你可以这样做-

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

    还应该有一个包含所有购物车信息的表格和另一个包含产品信息的表格

    【讨论】:

      【解决方案3】:

      您应该只在订单表中插入一个新行。这将为您提供 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,但每一行都有不同的产品。

      【讨论】:

      • 嘿 wrongstars,我应该进行哪个查询才能在新表中插入项目?
      • 这将是 mysql_query("插入 orders_products (orders_products_id,order_id,product_id,quantity) 值 ('',$order_id,".$get_row['id'].",1)") ;但请记住,您需要先定义一个新订单。因此,在循环产品之前,将新行插入“订单”。然后写: $order_id = mysql_insert_id();
      【解决方案4】:

      我建议您在 Order 和 Product 表之间创建一个桥名称“Order_Items”,并使用 Order_ID、Product_Id、Quantity、Price 等属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-17
        • 2019-12-14
        • 2010-11-13
        • 1970-01-01
        相关资源
        最近更新 更多