购物车出现的问题是同一产品被多次添加。

12 浏览
0 Comments

购物车出现的问题是同一产品被多次添加。

我有一个使用PHP和MySQL的购物车,工作良好,但问题是,如果我添加的产品只有代码数字,没有任何字母,那么产品会被多次添加。

例如,产品代码:K001工作正常,但如果产品代码是001而没有K,则会出现相同的问题。

$cartArray = array(
$code=>array(
'name'=>$name,
'code'=>$code,
'price'=>$price,
'quantity'=>1,
'image'=>$image)
);
if(empty($_SESSION["shopping_cart"])) {
$_SESSION["shopping_cart"] = $cartArray;
$status = "产品已添加到购物车!";
}else{
$array_keys = array_keys($_SESSION["shopping_cart"]);
if(in_array($array_keys, $code)) {
$status = "
产品已经添加到购物车!";  
} else {
$_SESSION["shopping_cart"] = array_merge(
$_SESSION["shopping_cart"],
$cartArray
);
$status = "产品已添加到购物车!";
}
}
}
?>


我已经添加了,请看一下,但是有同样的问题

$row = mysqli_fetch_assoc($result);
$name = $row['name'];
$code = strval($row['code']);
$price = $row['price'];
$image = $row['file_name'];
$cartArray = array(
$code=>array(
'name'=>$name,
'code'=>$code,
'price'=>$price,
'quantity'=>1,
'image'=>$image)
);

0
0 Comments

购物车重复添加相同产品的问题可能是由于PHP将数字自动转换为浮点数或整数(取决于数字)导致的。在发送之前将$code转换为字符串可以解决这个问题。

你可以使用多种方式来实现这一点:

$code = "$code";

但是这样可能会丢失前导零。

$code = strval($code);

如果$code是整数,则也会丢失前导零。

正如你所看到的,有多种方法可以实现这一点,但是在PHP中尽量不要使用前导零,或者可以在之后添加它们,就像这个解决方案中所示:

如何在PHP整数中保留前导零

另外,例如我正在尝试使用代码:1234,而不是使用0。

我已经添加了你推荐的代码,但没有结果,你能检查一下吗?

$row = mysqli_fetch_assoc($result);
$name = $row['name'];
$code = strval($row['code']);
$price = $row['price'];
$image = $row['file_name'];
$cartArray = array(
$code=>array(
'name'=>$name,
'code'=>$code,
'price'=>$price,
'quantity'=>1,
'image'=>$image)
);

0