php 会话购物车不处理尺寸
php session cart does not handle sizes
我有以下 php 代码可以将商品添加到基于会话的购物车中。例如,当使用没有尺寸变化的物品时,它工作正常。产品包括各种服装。有些有不同的尺寸,有些则没有。一种产品可以是有不同尺码的 T 恤,另一种可以是只有一种尺码的帽子。我希望能够将不同尺寸的 T 恤添加到购物车。就像现在一样,如果它不存在,它只会添加到基于会话的购物车中。如果存在,它将更新数量。
<?php
ini_set('display_errors', 'On');
/*include("session.php"); */
session_start();
if (isset($_POST["add_to_cart"]))
{
if (isset($_SESSION["shopping_cart"]))
{
$item_array_id = array_column($_SESSION["shopping_cart"],"item_id");
if (!in_array($_GET["id"], $item_array_id))
{
$count = count($_SESSION["shopping_cart"]);
$item_array = array(
'item_id' => $_GET["id"],
'item_name' => $_POST["hidden_name"],
'item_description' => $_POST["hidden_description"],
'item_price' => $_POST["hidden_price"],
'item_qty' => $_POST["hidden_qty"],
'itm_size' => $_POST["select-size-1"],
'itm_color' => $_POST["product-1-color"]
);
$_SESSION["shopping_cart"][$count] = $item_array;
}
else
{
// article exsits, update or remove
foreach($_SESSION["shopping_cart"] as $keys => $values)
{
if ($values["item_id"] == $_GET["id"] and ($values["itm_size"] != $_GET["select-size-1"]))
{
// check it item id is the same but color differs, if so add to session array
$count = count($_SESSION["shopping_cart"]);
$item_array = array(
'item_id' => $_GET["id"],
'item_name' => $_POST["hidden_name"],
'item_description' => $_POST["hidden_description"],
'item_price' => $_POST["hidden_price"],
'item_qty' => $_POST["hidden_qty"],
'itm_size' => $_POST["select-size-1"],
'itm_color' => $_POST["product-1-color"]
);
$_SESSION["shopping_cart"][$count] = $item_array;
}
else
{
// Orginal kod
if ($values["item_id"] == $_GET["id"])
{
// Om man anger 0 som antal ska artikel tas bort
if ($_POST["hidden_qty"] == "")
{
unset($_SESSION["shopping_cart"][$keys]);
}
else
{
// update qty
$_SESSION['shopping_cart'][$keys]['item_qty'] += $_POST["hidden_qty"];
}
}
}
}
}
}
else
{
//echo '<script>alert("session is set")</script>';
$item_array = array(
'item_id' => $_GET["id"],
'item_name' => $_POST["hidden_name"],
'item_description' => $_POST["hidden_description"],
'item_price' => $_POST["hidden_price"],
'item_qty' => $_POST["hidden_qty"],
'itm_size' => $_POST["select-size-1"],
'itm_color' => $_POST["product-1-color"]
);
$_SESSION["shopping_cart"][0] = $item_array;
}
}
?>
所以数量应该根据尺码上的 ID 更新...
更新:我添加了我认为也有助于考虑处理大小的内容。它不起作用,如果我添加一件 XL 码的 T 恤,它会按原样添加,但是当我添加另一件 XL 码的 T 恤时,它不会改变数量,但会再添加 2 件相同尺寸的 T 恤?
正如 04FS 所解释的那样,您不检查尺寸,只检查产品 ID。
[编辑]
好的,让我们简化并阐明所有代码...请仔细阅读这一行:$_SESSION["shopping_cart"][$index]['item_qty']++;
,我不确定它是否正是您想要的。
if (isset($_POST["add_to_cart"]))
{
$index = false;
if(!isset($_SESSION["shopping_cart"])) {
$index = false;
}
else {
foreach ($_SESSION["shopping_cart"] as $key => $value) {
if($value["item_id"] == $_REQUEST["id"] && $value['itm_size'] == $_POST['select-size-1']) {
$index = $key;
break;
}
}
}
if($index !== false) {
$_SESSION["shopping_cart"][$index]['item_qty']++;
}
else {
// create new entry in the session shopping_cart
$_SESSION['shopping_cart'][] = array(
'item_id' => $_REQUEST["id"],
'item_name' => $_POST["hidden_name"],
'item_description' => $_POST["hidden_description"],
'item_price' => $_POST["hidden_price"],
'item_qty' => $_POST["hidden_qty"],
'itm_size' => $_POST["select-size-1"],
'itm_color' => $_POST["product-1-color"]
);
}
}
[/编辑]
如果您需要这方面的帮助,请随时询问。
我有以下 php 代码可以将商品添加到基于会话的购物车中。例如,当使用没有尺寸变化的物品时,它工作正常。产品包括各种服装。有些有不同的尺寸,有些则没有。一种产品可以是有不同尺码的 T 恤,另一种可以是只有一种尺码的帽子。我希望能够将不同尺寸的 T 恤添加到购物车。就像现在一样,如果它不存在,它只会添加到基于会话的购物车中。如果存在,它将更新数量。
<?php
ini_set('display_errors', 'On');
/*include("session.php"); */
session_start();
if (isset($_POST["add_to_cart"]))
{
if (isset($_SESSION["shopping_cart"]))
{
$item_array_id = array_column($_SESSION["shopping_cart"],"item_id");
if (!in_array($_GET["id"], $item_array_id))
{
$count = count($_SESSION["shopping_cart"]);
$item_array = array(
'item_id' => $_GET["id"],
'item_name' => $_POST["hidden_name"],
'item_description' => $_POST["hidden_description"],
'item_price' => $_POST["hidden_price"],
'item_qty' => $_POST["hidden_qty"],
'itm_size' => $_POST["select-size-1"],
'itm_color' => $_POST["product-1-color"]
);
$_SESSION["shopping_cart"][$count] = $item_array;
}
else
{
// article exsits, update or remove
foreach($_SESSION["shopping_cart"] as $keys => $values)
{
if ($values["item_id"] == $_GET["id"] and ($values["itm_size"] != $_GET["select-size-1"]))
{
// check it item id is the same but color differs, if so add to session array
$count = count($_SESSION["shopping_cart"]);
$item_array = array(
'item_id' => $_GET["id"],
'item_name' => $_POST["hidden_name"],
'item_description' => $_POST["hidden_description"],
'item_price' => $_POST["hidden_price"],
'item_qty' => $_POST["hidden_qty"],
'itm_size' => $_POST["select-size-1"],
'itm_color' => $_POST["product-1-color"]
);
$_SESSION["shopping_cart"][$count] = $item_array;
}
else
{
// Orginal kod
if ($values["item_id"] == $_GET["id"])
{
// Om man anger 0 som antal ska artikel tas bort
if ($_POST["hidden_qty"] == "")
{
unset($_SESSION["shopping_cart"][$keys]);
}
else
{
// update qty
$_SESSION['shopping_cart'][$keys]['item_qty'] += $_POST["hidden_qty"];
}
}
}
}
}
}
else
{
//echo '<script>alert("session is set")</script>';
$item_array = array(
'item_id' => $_GET["id"],
'item_name' => $_POST["hidden_name"],
'item_description' => $_POST["hidden_description"],
'item_price' => $_POST["hidden_price"],
'item_qty' => $_POST["hidden_qty"],
'itm_size' => $_POST["select-size-1"],
'itm_color' => $_POST["product-1-color"]
);
$_SESSION["shopping_cart"][0] = $item_array;
}
}
?>
所以数量应该根据尺码上的 ID 更新...
更新:我添加了我认为也有助于考虑处理大小的内容。它不起作用,如果我添加一件 XL 码的 T 恤,它会按原样添加,但是当我添加另一件 XL 码的 T 恤时,它不会改变数量,但会再添加 2 件相同尺寸的 T 恤?
正如 04FS 所解释的那样,您不检查尺寸,只检查产品 ID。
[编辑]
好的,让我们简化并阐明所有代码...请仔细阅读这一行:$_SESSION["shopping_cart"][$index]['item_qty']++;
,我不确定它是否正是您想要的。
if (isset($_POST["add_to_cart"]))
{
$index = false;
if(!isset($_SESSION["shopping_cart"])) {
$index = false;
}
else {
foreach ($_SESSION["shopping_cart"] as $key => $value) {
if($value["item_id"] == $_REQUEST["id"] && $value['itm_size'] == $_POST['select-size-1']) {
$index = $key;
break;
}
}
}
if($index !== false) {
$_SESSION["shopping_cart"][$index]['item_qty']++;
}
else {
// create new entry in the session shopping_cart
$_SESSION['shopping_cart'][] = array(
'item_id' => $_REQUEST["id"],
'item_name' => $_POST["hidden_name"],
'item_description' => $_POST["hidden_description"],
'item_price' => $_POST["hidden_price"],
'item_qty' => $_POST["hidden_qty"],
'itm_size' => $_POST["select-size-1"],
'itm_color' => $_POST["product-1-color"]
);
}
}
[/编辑]
如果您需要这方面的帮助,请随时询问。