我想添加到购物车相同的项目,我想计算两个项目的价格,但它只显示0,但如果我删除此行$ price = $ price * $ each_item ['数量'];它显示了一个项目的正确价格,但后来我看不到总价格,这里是PHP代码
$cartOutput="";
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 products WHERE id='$item_id' LIMIT 1");
while($row=mysql_fetch_array($sql)){
$product_name = $row["product_name"];
$price = $row["price"];
}
$price = $price*$each_item['quantity'] ;// this is the line I was talking about
$cartOutput .= "<h2>Cart Item $i</h2>";
$cartOutput .= "Item ID: " . $each_item['item_id']."<br>";
$cartOutput .= "Item Quantity: " . $each_item['quantity'] ."<br>";
$cartOutput .= "Product Name: " . $product_name ."<br>";
$cartOutput .= "Product Price: " . $price . "<br>";
}
}
答案 0 :(得分:1)
这是非常弱的代码。
您不检查购物车的价值。你认为它是数字,整数,不错的代码,不是用户黑客等。
只要它已经设定,你似乎很开心,而不是&lt; 1 如果值为“hello you”或1,000,000,000(在另一个脚本或用户hack中出错),您的脚本会发生什么?
你运行一个循环foreach($_SESSION["cart_array"] as $each_item
- 会话中的每个值都是一个数组吗? (即$each_item
是一个数组)
不检查您的购物车阵列是否足以使代码完整,但在mysql查询中使用它也会造成麻烦。
验证,消毒!
您的错误日志文件中是否有错误? mysql查询是否会产生任何错误?
当您回显所有变量并打印数组时,会发生什么?mysql查询中的num行? 回声显示PHP实际使用的数据,从那里您可以看到问题所在。
mysql查询是否返回任何内容?你的代码假定它确实如此,如果没有,那么你就没有价值 这^^可能是你的问题!
e.g。
$price = $row["price"];
- 假设查询失败。
然后你跑:
$price = $price*$each_item['quantity'];
- 0 *任何= 0
在您将$item_id
设置为= $each_item['item_id']
后回复,因为我认为这将是根本原因。
如果没有,如上所述,回显所有内容,以便您可以在代码中找到问题。无论如何,这应该作为开发的一部分来完成,以确保一切顺利。
此外,您应该阅读有关使用mysqli或PDO,并停止使用旧的折旧mysql_函数。特别是因为你没有进行任何安全检查...
答案 1 :(得分:0)
确保 $ each_item ['quantity'] 不为空。
如果您想在购物车中添加新商品,那么原始商品数量为0. $ price * 0 = 0.
您是否在会话中更新项目数量?
试试这个:
$price = $price * ($each_item['quantity'] > 0 ? $each_item['quantity'] : 1);
答案 2 :(得分:0)
你知道答案。
你说这行是导致行的问题
$price = $price*$each_item['quantity']
如果你删除它,你就得到了价格。如果包含此项,则为零。 这意味着$ each_item ['quantity']为零:)
尝试打印该值,您可以自行修复。
顺便说一下,你不需要一个while循环!!答案 3 :(得分:0)
价格即将出现空白,然后确保数据库中的数据正常。意思是,根本没有退货价格。在我看来这个:
$price = $row["price"];
是你的问题专栏