我已经按照 phppots 教程制作了一个简单的购物车。使用以下代码创建一个数组,当“添加”动作发生时,我最终得到 $_SESSION["cart-item"] 数组中的值。
<?php
$db_handle= new dbcontroller();
if(!empty($_GET["action"]))
{
switch($_GET["action"])
{
case "add":
if(!empty($_POST["quantity"]))
{
$productByCode = $db_handle->runQuery("SELECT * FROM products WHERE code='" . $_GET["code"] . "'");
$itemArray = array($productByCode[0]["code"]=>array('name'=>$productByCode[0]["name"], 'code'=>$productByCode[0]["code"], 'quantity'=>$_POST["quantity"], 'price'=>$productByCode[0]["price"], 'image'=>$productByCode[0]["image"]));
if(!empty($_SESSION["cart_item"]))
{
if(in_array($productByCode[0]["code"],array_keys($_SESSION["cart_item"])))
{
foreach($_SESSION["cart_item"] as $k => $v)
{
if($productByCode[0]["code"] == $k)
{
if(empty($_SESSION["cart_item"][$k]["quantity"]))
{
$_SESSION["cart_item"][$k]["quantity"] = 0;
}
$_SESSION["cart_item"][$k]["quantity"] += $_POST["quantity"];
}
}
} else
{
$_SESSION["cart_item"] = array_merge($_SESSION["cart_item"],$itemArray);
}
} else
{
$_SESSION["cart_item"] = $itemArray;
}
}
break;
case "remove":
if(!empty($_SESSION["cart_item"]))
{
foreach($_SESSION["cart_item"] as $k => $v)
{
if($_GET["code"] == $_SESSION["cart_item"] [$k]['code'])
unset($_SESSION["cart_item"][$k]);
if(empty($_SESSION["cart_item"]))
unset($_SESSION["cart_item"]);
}
}
break;
case "empty":
unset($_SESSION["cart_item"]);
break;
case "Placeorder";
if(!empty($_SESSION["cart_item"]))
{
$insertOrder = $db_handle->runQuery("INSERT INTO `orders`(`Order ID`,`Order Date`) VALUES('$S','$Todaysdate')");
foreach ($_SESSION["cart_item"] as $item)
unset($_SESSION["cart_item"]);
if(empty($_SESSION["cart_item"]));
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
// Finally, destroy the session.
session_destroy();
}
break;
}
}
?>
“Place order”案例有效地将数据插入到orders表中,效果很好。问题是我还希望将 $_SESSION["cart-item"] 的数组内容插入order items表中。我知道我必须内爆或多行插入,但在拼凑代码时遇到了麻烦。订单商品表列名称为:商品名称、商品代码、商品数量、商品价格、商品图片和订单 ID。订单 ID 是变量 $S,这是我事先设置好的。我相信代码应该是这样的:
foreach($_SESSION["cart-item"] AS $item)
("INSERT into order items(`Item Name`, `Item Code`, `Item Quantity`, `Item Price`, `Item Image`, `Order ID`) VALUES($item['name'], $item['code'], $item['quantity'], $item['price'], $item['image'], '$S')");
我觉得我很接近,但无法拼凑起来。任何帮助,将不胜感激。