gpt4 book ai didi

php - 在下拉更改事件中从购物车中删除项目

转载 作者:行者123 更新时间:2023-11-28 01:46:36 25 4
gpt4 key购买 nike

我正在构建一个电子商务系统,用户可以在其中从类别 下拉列表中选择一个项目。我希望用户只从每个 类别 添加一个项目,当他们更改该类别的项目时,它必须删除购物车中已经存在的项目。每个类别的项目都具有相同的项目 ID,因此用户无法添加来自同一类别的两个或更多项目。

我可以将商品添加到购物车,但我很难确保如果同一类别的商品已存在于购物车中,则必须先将其删除。 例如如果用户想要将 Sony Chase 添加到购物车,而 LG Chase 已经在购物车中,则 LG Chase 必须替换为 Sony,因为它们属于同一类别 Chase 。不知道我说清楚没有

<form method="post" action="" class="jcart">
<fieldset>
<input type="hidden" name="my-item-url" value="" />
<input type="hidden" name="my-item-qty" value="1"/>
<table>
<tr><td width="180">
<select name="chasis" id="chasis" onChange="grabInfo(this.value)" class="styled-select">
<option value="">-- Select Chasis --</option>
<?php
$queryChasis = mysql_query("SELECT * FROM chasis");

while ($row = mysql_fetch_array($queryChasis))
{
?>
<option value="<?php echo $row['ItemID']; ?>"><?php echo $row['CName']; ?></option>
<?php
}
?>
</select>
</td>
</tr>
</table>
</fieldset>
</form>


<!-- Ajax Passing the ID -->
function grabInfo(str)
{
if (str=="")
{
document.getElementById("contentDiv").innerHTML = "";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("contentDiv").innerHTML = "&nbsp;";
document.getElementById("contentDiv").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","getinfoChasis.php?q="+str,true);
xmlhttp.send();
}

如果用户尝试从产品页面向购物车添加商品。这是我尝试从同一类别中删除现有项目的地方

if (isset($_GET["q"])) {
$pid = $_GET["q"];
$wasFound = false;
$i = 0;
// If the cart session variable is not set or cart array is empty
if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) {
// RUN IF THE CART IS EMPTY OR NOT SET
$_SESSION["cart_array"] = array(0 => array("item_id" => $pid, "quantity" => 1));
} else {
// RUN IF THE CART HAS AT LEAST ONE ITEM IN IT
foreach ($_SESSION["cart_array"] as $each_item) {
$i++;
while (list($key, $value) = each($each_item)) {
if ($key == "item_id" && $value == $pid) {

// That item is in cart already so let's remove
$key_to_remove = $pid;
if (count($_SESSION["cart_array"]) <= 1) {
unset($_SESSION["cart_array"]);
} else {
unset($_SESSION["cart_array"]["$pid"]);
sort($_SESSION["cart_array"]);
}
$wasFound = true;
} // close if condition
} // close while loop
} // close foreach loop
if ($wasFound == false) {
array_push($_SESSION["cart_array"], array("item_id" => $pid, "quantity" => 1));
}
}
}

呈现购物车以供用户在页面上查看

$cartOutput = "";
$cartTotal = "";
if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) {
$cartOutput .= "<h2 align='center'>Your shopping cart is empty</h2>";
}
else
{
$i = 0;
foreach ($_SESSION["cart_array"] as $each_item) {
$i++;
$item_id = $each_item['item_id'];
$sql = mysql_query("SELECT * FROM chasis WHERE ID='$item_id' LIMIT 1");
while ($row = mysql_fetch_array($sql)) {
$product_name = $row["CName"];
$price = $row["Price"];
}
$cartTotal = $price + $cartTotal;
/*$cartOutput .= "<h2>Cart Item $i</h2>";
$cartOutput .= "Item id: ".$each_item['item_id']."<br/>";
$cartOutput .= "Quantity: ".$each_item['quantity']."<br/>";*/
$cartOutput .= "<tr><td>".$product_name."</td>";
$cartOutput .= "<td>".$price."</td></tr>";
}
//total price
$cartTotal = $cartTotal;
}
echo '<table border="1" cellspacing="0" cellpadding="6">
<tr bgcolor="#ccffcc"><td width="220">Item Name</td>
<td width="120">Price</td></tr>';
echo $cartOutput;
echo '</table>';

echo '<table border="1" cellspacing="0" cellpadding="6">
<tr align="right"><td width="220"><strong>Total Price:</strong></td>
<td width="120">'.$cartTotal.'</td></tr></table>';
?>

最佳答案

我已经开发了 3 个电子商务应用程序,并且以标准的方式解决了这类问题。

  1. 首先,您需要保存类别 ID 以及添加到购物车中的任何产品的产品 ID。现在让我们来解决你的问题。您只想为任何用户的每个类别添加一个项目吗?假设,我在 JUICE 类别下有几种产品。例如,如果 JUICE 的 Category ID 是 4,那么 JUICE 类别下的所有产品都将有 4 作为它们的 Category ID

您可以做的是,当用户从下拉列表中选择产品时,您可以在 ajax 页面中使用 ajax 传递 Product IDCategory ID。请尝试使用 session 数组,因为将 session 用作数组不是专业的方法,如果您的数组太长,它会影响加载速度。所以你可以做的是,在传递 Product IDCategory ID 之后,你可以使用 SELECT 查询来检查购物车,以查找是否是同一类别的产品已经存在于表中。如果是,则运行 DELETE 查询以删除产品,然后运行 ​​INSERT 查询以插入新产品。否则,您可以直接使用 INSERT 查询添加新产品。

如果您需要了解更多详细信息,例如您需要处理的查询,请告诉我。我会尽力帮助您。

问候。

关于php - 在下拉更改事件中从购物车中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22298129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com