gpt4 book ai didi

php - 在购物车 session 中添加新的

转载 作者:行者123 更新时间:2023-11-29 00:01:35 24 4
gpt4 key购买 nike

我正在尝试在我的 session 中添加一系列产品,但所有代码所做的只是替换我当前的产品,请帮我找出这个错误。当我单击按钮时, session 中的产品更改为我刚刚输入任何建议的产品。下面是我的代码。

<?php

require_once("../../init.php");

function runQuery($query){
$result = $db->query($query);
while($row=mysqli_fetch_assoc($result)) {
$resultset[] = $row;
}
if(!empty($resultset))
return $resultset;
}

if(!empty($_GET["action"])) {
switch($_GET["action"]) {
case "add":
if(!empty($_POST["quantity"])) {
$productByCode = mysqli_fetch_array($db->query("SELECT * FROM productpurchase WHERE productname='" . $_GET["productname"] . "'"));

$itemArray = array($productByCode[0]["productname"]=>array('productname'=>$_POST["productname"], 'quantity'=>$_POST["quantity"], 'sell'=>$_POST["price"]));

if(!empty($_SESSION["cart_item"])) {
if(in_array($productByCode[0]["productname"],$_SESSION["cart_item"])) {
foreach($_SESSION["cart_item"] as $k => $v) {
if($productByCode[0]["productname"] == $k)
$_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["productname"] == $k)
unset($_SESSION["cart_item"][$k]);
if(empty($_SESSION["cart_item"]))
unset($_SESSION["cart_item"]);
}
}
break;
case "empty":
unset($_SESSION["cart_item"]);
break;
}
}
?>

最佳答案

您添加产品的方式有误。由于产品名称是 array 中的 key,因此您应该这样添加它。

$productName = $productByCode[0]["productname"];
$itemArray = array('productname' => $productName, 'quantity' => $_POST["quantity"], 'sell' => $_POST["price"]);
$_SESSION["cart_item"][$productName] = $itemArray;

此外,您的 in_array if 语句每次都会失败,因为 cart array 值是 arrays 而您是与 string 比较。使用 array_keys获取产品名称的 array

改成

if(in_array($productName, array_keys($_SESSION["cart_item"]))) {

而且您不需要 foreach 循环。

最终代码为

<?php

// Add product name to variable, since we will use it often
// This would be key in cart array.
$productName = $productByCode[0]["productname"];

// Array with product data
$itemArray = array('productname' => $productName, 'quantity' => $_POST["quantity"], 'sell' => $_POST["price"]);

// Check if cart has some products already
if(!empty($_SESSION["cart_item"])) {

// Is product already in cart? If so, edit only quantity
if(in_array($productName, array_keys($_SESSION["cart_item"]))) {
$_SESSION["cart_item"][$productName]["quantity"] = $_POST["quantity"];
} else {
// Product is not in cart, but we have other products in cart.
// So just add to existing cart array.
$_SESSION["cart_item"][$productName] = $itemArray;
}
}
else {
// No products, create cart session and add first product
$_SESSION["cart_item"] = array();
$_SESSION["cart_item"][$productName] = $itemArray;
}

?>

关于php - 在购物车 session 中添加新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29558731/

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