Add items to cart in php using sessions

phang

How cat looks like, there are items added twiceAm trying to update the quantity in add to cart session, but the below code only increases the quantity of the first item added twice and then perfoms a merge whenever any other item is added twice, kidly help

$('.add-to-cart-mt').on('click', function(e){
        e.preventDefault();
        var id =$(this).attr('id');
        $('#add-to-cat-dialog').dialog({
            autoOpen:false,
            modal:true,
            hide:"pluff",
            show:"slide",
            height:200,
            open: function() { $(".ui-dialog-titlebar-close").hide(); },
            
            buttons:{
                "Add":function (){
                    $('#add-to-cat-dialog').dialog("close");
                    $.ajax({
                        url: 'add_to_cart.php',
                        data: {  productId : id },
                        
                        success: function (data) {
                            $('.top-cart-contain').empty();
                            $('.top-cart-contain').load("header_cart_summary.php");
                        },
                        
                        error :function (data, textStatus, jqXHR) {  }
                    });
                },
                
                "Cancel":function (){
                    $(this).dialog("close");
                }
            }
        });
        
        $('#add-to-cat-dialog').dialog("open");
    });
session_start();
require './database.php';

      if(!empty($_GET["productId"])) {
          $id=$_GET["productId"];
            $productById = $connection->query("SELECT * FROM products WHERE productId='$id';");
            if($productById && (mysqli_num_rows($productById)>0)){
                echo 'query ok';
                $productDetail= mysqli_fetch_assoc($productById);
                $itemArray = array(
                    $productDetail["productId"]=>array(
                        'name'=>$productDetail["productName"],
                        'id'=>$productDetail["productId"], 
                        'quantity'=>1,
                        'price'=>$productDetail["productPrice"],
                        'image'=>$productDetail["productsImage1"]
                        )
                    );
            
                if(!empty($_SESSION["cart_item"])) {
                    if(in_array($productDetail["productId"],array_keys($_SESSION["cart_item"]))) {
                        foreach($_SESSION["cart_item"] as $k => $v) {
                            if($productDetail["productId"] == $k) {
                                  if(empty($_SESSION["cart_item"][$k]["quantity"])) {
                                        $_SESSION["cart_item"][$k]["quantity"] = 0;
                                  }
                                  $_SESSION["cart_item"][$k]["quantity"] += 1;
                            }
                        }
                    } else {
                          $_SESSION["cart_item"] = array_merge($_SESSION["cart_item"],$itemArray);
                    }
                } else {
                      $_SESSION["cart_item"] = $itemArray;
                }
                
                //set product count in the bag
                if(!empty($_SESSION['cart_volume'])){
                    $_SESSION['cart_volume'] += 1;
                } else {
                    $_SESSION['cart_volume'] = 1;
                }
                
            }else {echo ''. mysqli_error($connection);}
            
      } else {
          echo 'no item';
}
[enter image description here][1]<li class="item col-lg-4 col-md-4 col-sm-6 col-xs-6 ">
                                <div class="product-item">
                                  <div class="item-inner">
                                    <div class="product-thumb has-hover-img">
                                      <figure> <a title="Ipsums Dolors Untra" href="single_product.html"> <img class="first-img" src="./productImages/<?php echo $item['productsImage1']; ?>" style="height: 250px;"  alt=""> <img class="hover-img" src="../images/products/img05.jpg" alt=""> </a></figure>
                                      <div class="pr-info-area animated animate2"><a href="quick_view.html" class="quick-view"><i class="fa fa-search"><span>Quick view</span></i></a> <a href="wishlist.html" class="wishlist"><i class="fa fa-heart"><span>Wishlist</span></i></a> <a href="compare.html" class="compare"><i class="fa fa-exchange"><span>Compare</span></i></a> </div>
                                    </div>
                                    <div class="item-info">
                                      <div class="info-inner">
                                        <div class="item-title"> <h4><a title="Ipsums Dolors Untra" href="single_product.html"><?php echo $item['productName']; ?></a></h4> </div>
                                        <div class="item-content">
                                          <div class="rating"> <i class="fa fa-star-o"></i> <i class="fa fa-star-o"></i> <i class="fa fa-star-o"></i> <i class="fa fa-star-o"></i> <i class="fa fa-star-o"></i> </div>
                                          <div class="item-price">
                                            <div class="price-box">
                                              <p class="special-price"> <span class="price-label">Special Price</span> <span class="price">Ksh. <?php echo number_format($item['productPrice'], 2) ; ?></span> </p>
                                              <!--<p class="old-price"> <span class="price-label">Regular Price:</span> <span class="price"> $567.00 </span> </p>-->
                                            </div>
                                          </div>
                                          <div class="pro-action">
                                              <button type="button" class="add-to-cart-mt" id="<?php echo $item['productId']; ?>"> <i class="fa fa-shopping-cart"></i><span> Add to Cart</span> </button>
                                          </div>
                                        </div>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                              </li>

phang

The code below works fine as i required. Thanks to -Saleiro for his inputs.

[The correct output as required[1]

  if(!empty($_GET["productId"])) {
      $id=intval($_GET["productId"]);
        $productById = $connection->query("SELECT * FROM products WHERE productId='$id' ");
        if($productById && (mysqli_num_rows($productById)>0)){
            $productDetail= mysqli_fetch_assoc($productById);
            $itemArray = array(intval($productDetail["productId"])=>array('name'=>$productDetail["productName"], 'id'=>intval($productDetail["productId"]), 'quantity'=>1, 'price'=>$productDetail["productPrice"]));

            $found = false;
            if(!empty($_SESSION["cart_item"])) {
                    foreach($_SESSION["cart_item"] as $k => $v) {
                        if($productDetail["productId"] == $v['id']) {
                            $found= true;
                            if(empty($_SESSION["cart_item"][$k]["quantity"])) {
                                  $_SESSION["cart_item"][$k]["quantity"] = 0;
                            }
                            $_SESSION["cart_item"][$k]["quantity"] += 1;
                            break;
                        }
                    }
                if(!$found) {
                      $_SESSION["cart_item"] = array_merge($_SESSION["cart_item"],$itemArray);
                }
            } else {
                  $_SESSION["cart_item"] = $itemArray;
            }
        }else {echo ''. mysqli_error($connection);}

         if(!empty($_SESSION['cart_volume'])){
                $_SESSION['cart_volume'] += 1;
            } else {
                $_SESSION['cart_volume'] = 1;
            }

  } else {
      echo 'no item';

}

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related