javascript - 如果尺寸不同,请在购物车详细信息中分开产品
问题描述
我正在开发一个项目,它是鞋子和服装的在线商店。如果尺寸不一样,我如何分开产品。正如您在屏幕截图(下面的链接)上看到的那样,我添加了 Nike LeBron 15 'New Heights' 尺码 6。现在,假设我将为该尺码添加另一个数量,2 个数量,然后它会自动将数量更新为 3。再次,假设我将添加 Nike LeBron 'New Heights' 尺码 7。现在的问题是,如果我添加了 Nike LeBron 'New Heights' 尺码 7,如何在购物车内容中显示(见下图)?我已经尝试了下面的代码,但它只看到了 Nike LeBron 15 'New Heights' Size 6。
截屏:
我试过的:
//Add to Cart button
<button id="add_to_cart<?=$row['product_id']?>" onclick="add_to_cart('<?=$row['product_id']?>', 'Add')" class="add_to_cart">
<i class="fa fa-shopping-cart"></i> Add to Cart
</button>
//JQuery/Ajax
function add_to_cart(product_id, product_size, status) {
var quantity = $('#quantity'+product_id).val();
var button = (status === 'Delete') ? $('#add_to_cart'+product_id).html('<i class="fa fa-shopping-cart"></i> Add to cart') : $('#add_to_cart'+product_id).html('<i class="fa fa-check-square-o"></i> Added');
button,setTimeout(function(){
var data = { action : 'Add To Cart', product_id : product_id, status : status, quantity : quantity, product_size : product_size };
$.ajax({
type: 'POST',
url: '../pages/class.php',
data: data,
cache: false,
dataType: 'json',
success: function(data) {
data.success == true ? successful(data.success,data.bgcolor,data.color,data.message) : successful(data.success,data.bgcolor,data.color,data.message);
}
});
$('#add_to_cart'+product_id).html('<i class="fa fa-shopping-cart"></i> Add to Cart');
show_cart_count();
show_cart_contents();
show_cart_content_in_cart_page();
show_cart_content_in_checkout_page();
show_cart_total();
},300);
}
//Here's the class.php
if(isset($_POST['action']) && !empty($_POST['action'])) {
$action = $_POST['action'];
switch($action) {
case 'Add To Cart':
$product_id = $_POST['product_id'];
$product_size = $_POST['product_size'];
$quantity = $_POST['quantity'];
$status = $_POST['status'];
add_to_cart($product_id, $product_size, $quantity, $status);
break;
}
}
//add_to_cart function
function add_to_cart($product_id, $product_size, $quantity, $status) {
GLOBAL $db_conn;
$search_query = "SELECT p.*, pe.*, pct.* FROM tblproduct p JOIN (SELECT p.product_id, MIN(pe.product_extension_id) AS product_extension_id FROM tblproduct p LEFT JOIN tblproduct_extension pe ON pe.product_id = p.product_id WHERE p.product_id='$product_id' GROUP BY product_id) product_unique LEFT JOIN tblproduct_extension pe ON pe.product_extension_id = product_unique.product_extension_id LEFT JOIN tblproduct_carousel pct ON pct.product_id = p.product_id WHERE p.product_id = product_unique.product_id";
$query = mysqli_query($db_conn, $search_query);
$row = mysqli_fetch_array($query);
if(isset($product_id)) {
switch ($status) {
case 'Add':
if(isset($_SESSION['item_cart'][$product_id]['product_id']) == $product_id && isset($quantity)) {
$_SESSION['item_cart'][$product_id]['product_qty'] += $quantity;
$qty = ($quantity == 1) ? 'quantity' : 'quantities';
notify([true,'#222','#fff',$row['product_name']. ' ' .'has been readded with '.$quantity.' '.$qty. '.']);
} else {
$count = (!isset($_SESSION['item_cart'])) ? 0 : count($_SESSION['item_cart']);
$add_quantity = (isset($quantity)) ? $quantity : 1;
$_SESSION['item_cart'][$product_id][$product_size] = array(
"product_id"=>$product_id,
"product_qty"=>$add_quantity,
"product_size"=>$product_size,
"product_price"=>$row['product_price'],
"product_name"=>$row['product_name'],
"product_segment"=>$row['segment_id'],
"product_image"=>$row['product_images'],
"product_brand"=>$row['product_brand'],
"product_stocks"=>$row['product_stocks'],
"product_category"=>$row['category_name']
);
notify([true,'#222','#fff',$row['product_name']. ' ' .'has been added.']);
}
break;
}
}
}
解决方案
推荐阅读
- python - 通过 POST 请求发送序列化数据
- sql - 欺骗 SQL 将数据读取为 true 而不是 false
- c# - 通用 ViewModel 类
- mysql - 无法连接托管在 Amazon Web Server 上的 MySql 数据库
- python - 如何从具有对应角度的数组中返回最大值
- c# - 是否可以增加 CEF/CefSharp 中的堆栈大小?
- java - 如何根据不同的屏幕尺寸设置按钮
- ruby-on-rails - tzinfo-data + Rails 报告爱尔兰的时区偏移量错误
- docker - Swarm 模式图像编排如何工作?
- php - 地理编码如何仅在边界区域中搜索地址