我目前正在使用AngularJS,PHP,网络服务以及一些html / css和XML开发购物应用程序。
我目前正在开设购物车会议,我偶然发现了一些问题,无法创建总价,项目总数和增值税计算。
所以会话是用PHP编写的。代码如下:
<?php
session_start();
$product_id = $_REQUEST['product_id'];
$product_name = $_REQUEST['product_name'];
$product_price = round($_REQUEST['product_price'], 2);
$product_size = $_REQUEST['product_size'];
$product_quantity = $_REQUEST['product_quantity'];
$total_product_price = $product_price*$product_quantity;
round($total_product_price, 2);
$total_items = $_SESSION['cart'][$product_quantity];
// Add new item to session
$cartProduct = array(
"id" => $product_id,
"name" => $product_name,
"price" => $product_price,
"size" => $product_size,
"quantity" => $product_quantity,
"total_price" => $total_product_price,
"total_items" => $total_items
);
/*
* check if the 'cart' session array was created
* if it is NOT, create the 'cart' session array
*/
if(!isset($_SESSION['cart'])){
$_SESSION['cart'] = array();
}
// check if the item is in the array, if it is, do not add
if(array_key_exists($product_id and $product_size, $_SESSION['cart'])){
// redirect to product list and tell the user it was added to cart
echo "<script> alert('Dit product staat al in de winkelwagen')</script>])";
}
// else, add the item to the array
else{
$_SESSION['cart'][$product_id]=$cartProduct;
}
&#13;
如上面的代码所述,请求提供有关产品的所有信息。然后将product_id
等请求的项目设置为array()
。经过一些检查后,array()
被添加到一个sessoion:$_SESSION['cart'];
。我添加和显示购物车没有问题。我遇到的问题是创建显示购物车中的total_items,购物车的total_price和增值税计算所需的计算。
如果需要更多信息,请告知我们。
提前致谢!
答案 0 :(得分:1)
查看您的代码,这是我看到的问题
$total_items = $_SESSION['cart'][$product_quantity];
由于
$_SESSION['cart'][$product_id]=$cartProduct;
和
$cartProduct = array(
"id" => $product_id,
"name" => $product_name,
"price" => $product_price,
"size" => $product_size,
"quantity" => $product_quantity,
"total_price" => $total_product_price,
"total_items" => $total_items
);
因此,如果您有$product_quantity
3
,那么您将$product_id
'3'拉出来是没有意义的。例如,如果我们$product_id
6
和$product_quantity
3
,那么:
$_SESSION['cart'][6] = array(
"id" => 6, //$product_id,
"name" => $product_name,
"price" => $product_price,
"size" => $product_size,
"quantity" => 3, //$product_quantity,
"total_price" => $total_product_price,
"total_items" => $total_items
);
那么我们为什么要提取数量而不是产品ID,请按照。
这里唯一可以用来代替$_SESSION['cart'][$product_quantity]
的是
$total_items = $_SESSION['cart'][$product_id]['total_items'];
但我认为您可能还有其他问题,因为$product_quantity
和$total_items
之间的目的或区别是什么?总产品不是产品数量。或者是总产品的数量(唯一产品ID的数量),以及一个特定产品的数量(一个产品ID的数量)。如果是这种情况,跟踪每个产品中所有产品的总数是不必要的,并且容易出错。
您还可以在将产品分配到购物车之前访问会话,此处
$total_items = $_SESSION['cart'][$product_quantity];
这可能也是错误的
array_key_exists($product_id and $product_size, $_SESSION['cart'])
我在测试类似的东西时得到了这个
警告:array_key_exists():第一个参数应该是字符串或整数
这可能是因为$product_id and $product_size
通过在那里进行布尔比较来评估true
。
只是我的评估。