Hi Team
I need some help with my below logic, basically i want to do 2 things. Add to cart an item and must display it to the cart badge, then when total product is 145 it must reduce when i click - button and vice versa when i click + to increment it. Currently now i unable to get this right, need some guidance.
<div class="container-fluid py-5">
<div class="row px-xl-5">
<div class="col-lg-5 pb-5">
<div id="product-carousel" class="carousel slide" data-ride="carousel">
<div class="carousel-inner border">
<div class="carousel-item active">
<img class="w-100 h-100" src="img/product-1.jpg" alt="Image">
</div>
<div class="carousel-item">
<img class="w-100 h-100" src="img/product-2.jpg" alt="Image">
</div>
<div class="carousel-item">
<img class="w-100 h-100" src="img/product-3.jpg" alt="Image">
</div>
<div class="carousel-item">
<img class="w-100 h-100" src="img/product-4.jpg" alt="Image">
</div>
</div>
<a class="carousel-control-prev" data-slide="prev">
<i class="fa fa-2x fa-angle-left text-dark"></i>
</a>
<a class="carousel-control-next" data-slide="next">
<i class="fa fa-2x fa-angle-right text-dark"></i>
</a>
</div>
</div>
<div class="col-lg-7 pb-5">
<h3 class="font-weight-semi-bold">Colorful Stylish Shirt</h3>
<div class="d-flex mb-3">
<div class="text-primary mr-2">
<small class="fas fa-star"></small>
<small class="fas fa-star"></small>
<small class="fas fa-star"></small>
<small class="fas fa-star-half-alt"></small>
<small class="far fa-star"></small>
</div>
<small class="pt-1">(50 Reviews)</small>
</div>
<h3 class="font-weight-semi-bold mb-4">R150.00</h3>
<div class="d-flex align-items-center mb-4 pt-2">
<div class="input-group quantity mr-3" style="width: 130px;">
<div class="input-group-btn">
<button class="btn btn-primary btn-minus">
<i class="fa fa-minus"></i>
</button>
</div>
<input type="text" class="form-control bg-secondary text-center" value="1">
<div class="input-group-btn">
<button class="btn btn-primary btn-plus">
<i class="fa fa-plus"></i>
</button>
</div>
</div>
<button class="btn btn-primary px-3 ">
<a class="btn btn-sm text-dark p-0"
data-id="1"
data-product-name="Colorful Stylish Shirt"
data-product-image="img/product-1.jpg"
></a>
<i class="fa fa-shopping-cart mr-1 add-to-cart-btn" ></i> Add To Cart</button>
</div>
$(document).ready(function() {
var cart = [];
var cartBadge = $(".cart-badge");
var cartTotal = $("#cart-total");
var cartItems = $("#cart-items");
// Initialize total to 0 when the page loads
var total = 0;
// Function to update the cart badge and cart total
function updateCartDisplay() {
total = 0; // Reset total to 0 before recalculating
cartItems.empty();
for (var i = 0; i < cart.length; i++) {
var item = cart[i];
var itemTotal = item.price * item.quantity;
total += itemTotal;
cartItems.append("<li>" + item.name + " - Quantity: " + item.quantity + " - Total: R" + itemTotal.toFixed(2) + "</li>");
}
cartBadge.text(cart.length);
cartTotal.text("R" + total.toFixed(2));
}
// Click event for the Add To Cart button
$(".add-to-cart").on("click", function() {
var productId = 1;
var productName = "Chick Cosmetics Makeup Brush + Sponge"; // Replace with the actual product name
var productPrice = 145.00; // Replace with the actual product price
var productQuantity = parseInt($(this).siblings(".quantity").find(".quantity-input").val());
console.log("Product Price: " + productPrice);
console.log("Product Quantity: " + productQuantity);
var existingItemIndex = cart.findIndex(function(item) {
return item.name === productName;
});
if (existingItemIndex !== -1) {
// If the product is already in the cart, update the quantity
cart[existingItemIndex].quantity += productQuantity;
console.log("Product already in cart. Updated quantity: " + cart[existingItemIndex].quantity);
} else {
// Otherwise, add it to the cart
cart.push({
name: productName,
price: productPrice,
quantity: productQuantity
});
console.log("Product added to cart.");
}
// Update the cart badge and cart total
updateCartDisplay();
});
// Click event for the "+" and "-" buttons
$(".btn-minus, .btn-plus").on("click", function() {
var action = $(this).data("action");
var inputField = $(this).siblings(".quantity-input");
var currentQuantity = parseInt(inputField.val());
if (action === "increase") {
inputField.val(currentQuantity + 1);
} else if (action === "decrease" && currentQuantity > 1) {
inputField.val(currentQuantity - 1);
}
// Update the cart badge and cart total after quantity change
updateCartDisplay();
// Ensure the quantity change is reflected in the input field
inputField.trigger("change");
});
// Rest of your code for updating the server-side cart and initializing the cart
// Function to update the server-side cart
function updateServerCart() {
$.ajax({
type: "POST",
url: "makeup-cart.php",
data: {
action: 'updateCart',
cart: JSON.stringify(cart)
},
success: function() {
console.log("Server-side cart updated successfully.");
}
});
}
// Function to retrieve the cart from the server
function getServerCart() {
$.ajax({
type: "POST",
url: "makeup-cart.php",
data: {
action: 'getCart'
},
success: function(data) {
cart = JSON.parse(data);
updateCartDisplay();
}
});
}
// Initialize the cart by retrieving it from the server
getServerCart();
});
});