Php 使用会话增加购物车项目数量
我知道我的问题可能与Stackoverflow中的其他问题非常相似。我发现了一些类似的问题,但实际上我无法为我的问题找到正确的解决方案 我正在使用Sessions和ajaxjson编写购物车。 我的产品 结构有点复杂。它有名称、大小、类型、颜色和颜色 每种类型和尺寸的具体价格。主要的一点是我不能 如果名称、大小、类型、颜色和价格不一致,则增加项目数量 同样,如果我添加相同的产品。这是我的密码。我想我 我写得对,但我不明白问题出在哪里。 实际上,它增加了物品的数量,但只增加了一次 我正在检查数组,它的项目数量没有增加Php 使用会话增加购物车项目数量,php,ajax,json,Php,Ajax,Json,我知道我的问题可能与Stackoverflow中的其他问题非常相似。我发现了一些类似的问题,但实际上我无法为我的问题找到正确的解决方案 我正在使用Sessions和ajaxjson编写购物车。 我的产品 结构有点复杂。它有名称、大小、类型、颜色和颜色 每种类型和尺寸的具体价格。主要的一点是我不能 如果名称、大小、类型、颜色和价格不一致,则增加项目数量 同样,如果我添加相同的产品。这是我的密码。我想我 我写得对,但我不明白问题出在哪里。 实际上,它增加了物品的数量,但只增加了一次 我正在检查数组,
$data = json_decode($_POST['jsonData'], true);
$pr_type = $data['pr_type'];
$pr_size = $data['pr_size'];
$pr_link = $data['pr_link'];
$pr_color = $data['pr_color'];
$pr_price = $data['pr_price'];
$products_s = $this->getSession()->get('prof_cart');
$product = array();
if (empty($products_s)) {
$products_s = array();
} else {
$products_s = $products_s;
}
$products = Model::factory('Client_Product')->getProductById($pr_link);
$type = Model::factory("Client_Product")->getProductTypeByLink($pr_type);
$size = Model::factory("Client_Product")->getProductSizeById($pr_size);
if ($pr_type != 'undefined') {
$product['type'] = $type[0]['title'];
} else {
$product['type'] = "";
}
$isCreate = true;
foreach ($products_s as $id) {
if ($id['price'] == $pr_price &&
$id['title'] == $products[0]['title'] &&
$id['size'] == $size[0]['size'] &&
$id['type'] == $type[0]['title']) {
$id['quant']++;
$isCreate = false;
}
}
if ($isCreate) {
$product['quant'] = 1;
$product['size'] = $size[0]['size'];
$product['title'] = $products[0]['title'];
$product['price'] = $pr_price;
$product['color'] = $pr_color;
array_push($products_s, $product);
}
$sum = 0;
foreach ($products_s as $id) {
$sum += $id['price'] * $id['quant'];
}
//echo $sum;
echo "<pre>";
var_dump($products_s);
echo "</pre>";
$this->getSession()->set('prof_cart', $products_s);
$this->getSession()->set('prof_sum', $sum);
$data=json\u decode($\u POST['jsonData'],true);
$pr_type=$data['pr_type'];
$pr_size=$data['pr_size'];
$pr_link=$data['pr_link'];
$pr_color=$data['pr_color'];
$pr_price=$data['pr_price'];
$products_s=$this->getSession()->get('prof_cart');
$product=array();
if(空($products_)){
$products_s=array();
}否则{
$products\U s=$products\U s;
}
$products=Model::factory('Client\u Product')->getProductById($pr\u link);
$type=模型::工厂(“客户产品”)->getProductTypeByLink($pr\u类型);
$size=型号::工厂(“客户产品”)->getProductSizeById($pr\u尺寸);
如果($pr_type!=“未定义”){
$product['type']=$type[0]['title'];
}否则{
$product['type']=“”;
}
$isCreate=true;
foreach($products\U s as$id){
如果($id['price']=$pr\u price&&
$id['title']==$products[0]['title']&&
$id['size']=$size[0]['size']&&
$id['type']==$type[0]['title']){
$id['quant']++;
$isCreate=false;
}
}
如果($isCreate){
$product['quant']=1;
$product['size']=$size[0]['size'];
$product['title']=$products[0]['title'];
$product['price']=$PRU价格;
$product['color']=$pr\U color;
阵列推送($products,$product);
}
$sum=0;
foreach($products\U s as$id){
$sum+=$id['price']*$id['quant'];
}
//echo$sum;
回声“;
var_dump(产品);
回声“;
$this->getSession()->set('prof_cart',$products's);
$this->getSession()->set('prof_sum',$sum);
您需要增加主产品阵列的数量,如下所示
foreach ($products_s as $id) {
if ($id['price'] == $pr_price &&
$id['title'] == $products[0]['title'] &&
$id['size'] == $size[0]['size'] &&
$id['type'] == $type[0]['title']) {
$id['quant'] = $id['quant']++;
$isCreate = false;
}
}
试试这个:
谢谢非常感谢,它工作得很好
foreach ($products_s as $id) {
if ($id['price'] == $pr_price &&
$id['title'] == $products[0]['title'] &&
$id['size'] == $size[0]['size'] &&
$id['type'] == $type[0]['title']) {
$id['quant'] = $id['quant']++;
$isCreate = false;
}
}