Hi Team
I am debugging an error log and notice when inserting a data from both client side(javascript and html). Its expecting some additional fields from the database. My connection is fine, but if it says " must include all my table defitions from wishlist or products?
{ "success": false, "message": "Required data missing." }
// html code
< class="col-lg-3 col-md-6 col-sm-12 pb-1"> <div class="card product-item border-0 mb-4"> <div class="card-header product-img position-relative overflow-hidden bg-transparent border p-0"> <img class="img-fluid w-100" src="img/wishlist-img/SecondWishlist.jpg" alt=""> </div> <div class="card-body border-left border-right text-center p-0 pt-4 pb-3"> <h6 class="text-truncate mb-3">Colorful Stylish Shirt</h6> <div class="d-flex justify-content-center"> <h6>R200.00</h6> <h6 class="text-muted ml-2"><del>R200.00</del></h6> </div> </div> <div class="card-footer d-flex justify-content-between bg-light border"> <a class="btn btn-sm text-dark p-0"><i class="fas fa-eye text-primary mr-1"></i>View Detail</a> <a class="btn btn-sm text-dark p-0 add-to-wishlist" data-id="12" data-product-name="Colorful Stylish Shirt" data-product-image="img/wishlist-img/SecondWishlist.jpg"> <i class="fas fa-heart text-danger mr-1"></i>Add To Wishlist</a> </div> </div> </div> /*** @author:Gcobani Mkontwana @date:11/10/2023 @script handles adding of wishlist to cart. **/ $(document).ready(function () { // Initialize wishlist count to 0 let wishlistCount = 0; // Function to update the wishlist badge count function updateWishlistBadge() { $("#wishlist-badge").text(wishlistCount); } // Function to open the login modal when the badge is clicked function openLoginModal() { $("#wishlistLoginModal").modal("show"); } // Function to display wishlist items function displayWishlistItems() { // Here, you should make an AJAX request to your server to fetch the user's wishlist items. // Replace the following code with your actual request: $.ajax({ url: 'get-wishlist-product.php', // Replace with your API endpoint method: 'GET', dataType: 'json', success: function (response) { if (response.success) { // The server should return an array of wishlist items. const wishlistItems = response.items; // Clear the existing items in the list $('#wishlistItems').empty(); // Add each item to the list wishlistItems.forEach(function (item) { $('#wishlistItems').append(`<li class="list-group-item">${item.product_name}</li>`); }); } }, error: function (error) { console.error('Error fetching wishlist items:', error); } }); } // Listen for the "Add to Wishlist" button click $(".add-to-wishlist").click(function () { // Simulate adding an item to the wishlist const productID = $(this).data("id"); const productName = $(this).data("product-name"); const productImage = $(this).data("product-image"); //const productCode = $(this).data("product_code"); // You can now send this product information to the server using an AJAX request to add it to the user's wishlist. // Replace the following code with your actual request: $.ajax({ l: 'add-to-wishlist.php', // method: 'POST', data: { product_id: productID, product_name: productName, product_image: productImage }, dataType: 'json', success: function (response) { if (response.success) { // If the product is successfully added to the wishlist, update the badge count wishlistCount++; updateWishlistBadge(); // If items are in the wishlist, open the login modal and display items if (wishlistCount > 0) { displayWishlistItems(); openLoginModal(); } } else { console.error('Failed to add to wishlist:', response.message); } }, error: function (error) { console.error('Error adding to wishlist:', error); } }); }); });
// server side
<?php ob_start(); // Start output buffering to prevent header issues ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); session_start(); // Check if the user is logged in or not if (isset($_SESSION['user_id'])) { $user_id = $_SESSION['user_id']; } else { $user_id = 0; } // Check if the required POST values exist if (isset($_POST['product_name'], $_POST['product_image'])) { $product_name = $_POST['product_name']; $product_image = $_POST['product_image']; //$product_code = $_POST['product_code']; // $product_code = isset($_POST['product_code']) ? $_POST['product_code'] : ''; try { // Establish a database connection $pdo = new PDO("mysql:host=localhost;dbname=db;charset=utf8", "username", "password"); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Check if the product exists in the products table based on name, image, and code $productQuery = "SELECT id FROM products WHERE product_name = :product_name AND product_image = :product_image "; $productStmt = $pdo->prepare($productQuery); $productStmt->bindParam(":product_name", $product_name, PDO::PARAM_STR); $productStmt->bindParam(":product_image", $product_image, PDO::PARAM_STR); $productStmt->execute(); if ($productStmt->fetch()) { // The product exists, so it's safe to add it to the wishlist $query = "INSERT INTO wishlist (user_id, product_name, product_id) VALUES (:user_id, :product_name, :product_image)"; $stmt = $pdo->prepare($query); $stmt->bindParam(":user_id", $user_id, PDO::PARAM_INT); $stmt->bindParam(":product_name", $product_name, PDO::PARAM_STR); $stmt->bindParam(":product_image", $product_image, PDO::PARAM_STR); $stmt->execute(); $response = array("success" => true, "message" => "Product added to your wishlist."); } else { $response = array("success" => false, "message" => "Product does not exist."); } } catch (PDOException $e) { // Handle database connection or query errors $response = array("success" => false, "message" => "Database error: " . $e->getMessage()); } } else { // If required POST values are missing $response = array("success" => false, "message" => "Required data missing."); // issue is here } // Return a JSON response header("Content-Type: application/json"); echo json_encode($response); ob_end_flush(); // End output buffering ?>