我有一个购物车系统工作正常,直到我意识到如果你添加两个相同的产品,他们都进入购物车,但只有一个添加到数据库时,用户点击购买。
不确定这是完全相同的。我的代码是经过设计的,因此有一个带有POST [购买]的IF语句的逻辑后端:
if($_POST['purchase']) {
foreach($cart->get_contents() as $item) {
$sql="INSERT INTO wp_scloyalty_orders VALUES (".$user_id.", ".$item['id'].", NOW())";
if($result=mysql_query($sql)){
$confpurchase = '?confpurchase=success&id='.$item['id'].''; //USING THE URL FOR MESSAGE PASSING... ONLY IF THE PRODUCT WAS INSERTED INTO THE DATABASE!
}
}
$cart->empty_cart();
unset($_SESSION['cart']);
header("Location: ".$_SERVER['PHP_SELF']."/my-account".$confpurchase);
exit;
}
是否与mysql这样的东西一样,不要让两个相同的行在一个循环中输入数据库?如果用户ID和itemID多次添加相同的产品,则它们将是相同的。
谢谢!
EDIT --------------------------------
好吧我已经意识到我的错误,当循环浏览购物车内容时,我也想要提取itemID和itemQTY(数量)。我想这是为了停止多次显示相同的ID。这仍然给我一个问题,即无法将更多相同的项目输入数据库:/
foreach($cart->get_contents() as $item1) {
echo $item1['id'];
echo $item1['qty'];
}
例如,如果有两个ID为100的产品,则返回1002。
谢谢大家:)
答案 0 :(得分:1)
听起来你在数据库中的某个字段上有一个UNIQUE约束。
答案 1 :(得分:0)
我不知道您的特定购物车是如何工作的,但从逻辑上讲,您应该有一个数量列并将其更改为2等。
EDIT 刚看到你的编辑。忽略这一点。