PHP 购物车多个值在一个 id

PHP shopping cart multiple values in one id

我为我的学校项目制作了一个带有购物车的 php 网店。购物车工作正常,但我在将购物车中的产品与订单一起存储到数据库时遇到了一些问题。

我现在正在查询产品在订单数据库和 order_items 数据库中的存储位置。但是,当我将它们存储在订单数据库中时,我的所有产品都得到了不同的 order_id,我想创建一个查询以将产品存储在一个 order_id 中。但出于某种原因,我无法让它为我工作。

我现在的脚本中的函数:

 function cart() {
global $lang;
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");
                    $query = "UPDATE parts set hoeveelheid = hoeveelheid - '$value' WHERE id = '$id'";
                    $query2= "INSERT INTO order_items(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 $lang['CART_EMPTY'];
}
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
    echo "<form method='post'>
    <input type='submit' name='behandelen' value='"; echo $lang['BUTTON_PAY']; echo "'>
</form>";
}


}

我现在的表数:

订单:link to orders image

order_items: link to order_items image

我希望有人能告诉我它是如何完成的。

提前致谢。

更新的脚本:

function cart() {
global $lang;
global $query;
global $query2;
global $query3;
$total = 0;
$total2 = 0;
$datum=date("Y-m-d H:i:s");
$query3= "INSERT INTO orders (betaaldatum) VALUES ('$datum')";
$iid = mysql_insert_id();
mysql_query($query3);
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");
                    $query = "UPDATE parts set hoeveelheid = hoeveelheid - '$value' WHERE id = '$id'";
                   // $query3= "INSERT INTO orders (betaaldatum) VALUES ('$datum')";
                   // $iid = mysql_insert_id();
                    $query2= "INSERT INTO order_items(order_id, partnr, price, hoeveelheid, betaaldatum)VALUES('$iid','$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 $lang['CART_EMPTY'];
}
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
    echo "<form method='post'>
    <input type='submit' name='behandelen' value='"; echo $lang['BUTTON_PAY']; echo "'>
</form>";
}


}

您必须插入您的订单并获取最后插入的 ID mysql_insert_id

然后使用返回的id在order_items中识别order_id table.

因此,您需要:

创建订单table;

在 orders_items table 中插入产品之前,创建一个订单:INSERT INTO order (date,...) VALUES (now(),...)

恢复最后插入的 ID:$order_id = mysql_insert_id()

在 order_items 中插入产品:INSERT INTO order_items (order_id,...) VALUES ('$order_id',...)

你必须改变:

$query3= "INSERT INTO orders (betaaldatum) VALUES ('$datum')";
$iid = mysql_insert_id();
mysql_query($query3);

收件人:

$query3= "INSERT INTO orders (betaaldatum) VALUES ('$datum')";
mysql_query($query3);
$iid = mysql_insert_id();

您的订单有问题 table。它目前有 order_items_id,它不应该。您的订单 table 应该存储关于您的订单的 "header" 级信息,不涉及商品。那么在你的订单商品table中,每件商品都有一个id,订单中的所有商品共享同一个order id,也就是订单table.

中的id

要向您的订单 table 添加新订单,请执行插入操作,然后从 mysql 获取结果 ID。您插入订单的基本结构 table 应该是:

mysql_query("INSERT INTO orders (gebruikersnaam, hoeveelheid) VALUES ('blah','blah')";
$id = mysql_insert_id();

$id 将具有刚刚创建的订单的 order_id。

然后,您知道订单 ID,但您没有使用插入语句将其添加到 order_items table。

你有:

INSERT INTO order_items(partnr, price, hoeveelheid, betaaldatum)VALUES('$partnr', '$price', '$value', '$datum')

将其更改为:

INSERT INTO order_items(order_id,partnr, price, hoeveelheid, betaaldatum)VALUES('$id','$partnr', '$price', '$value', '$datum')

这里 MySQL Fiddle 展示了您应该拥有的 table 关系。