Aggiunta prodotti nel carrello con lo stesso in e varianti diverse

maxnegri2036

Nuovo Utente
10 Mar 2021
12
0
1
Buonasera a tutti.
Ho un carrello della spesa e vorrei poter aggiungere prodotti con lo stesso id ma con varianti diverse.
Quando provo ad aggiungere lo stesso prodotto con varianti diverse, mi sovrascrive il primo e resta solo l'ultimo aggiunto.
Questo è il mio codice:

PHP:
<?php
session_start();

//$quantity=$_POST["product_qty"];
//var_dump($quantity); die();
//controlla se ci sono varianti
if (isset($_POST['variante'])){
 // original string
$OriginalString = $_POST['variante'];
$matches = implode(',', $OriginalString);
$sql = "SELECT * FROM varianti WHERE variante_id IN ($matches)";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
$descrizione_variante[]=$row["descrizione_variante"];
$valore_variante[]=$row["valore_variante"];
$variante_id[]=$row["variante_id"];
$tipo_variante[]=$row["tipo_variante"];
$somma +=$row["valore_variante"];
//$_SESSION['descrizione_variante'][]=$descrizione_variante;
$new_product['valore_variante']=$valore_variante;
$new_product['descrizione_variante']=$descrizione_variante;
$new_product['variante_id']=$variante_id;
}
}
}
//controlla se ci sono aggiunte
if (isset($_POST['aggiunta'])){
// original string
$OriginalString = $_POST['aggiunta'];
$matches = implode(',', $OriginalString);
$sql = "SELECT * FROM aggiunte WHERE aggiunta_id IN ($matches)";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
$descrizione_aggiunta[]=$row["descrizione_aggiunta"];
$valore_aggiunta[]=$row["valore_aggiunta"];
$aggiunta_id[]=$row["aggiunta_id"];
$tipo_aggiunta[]=$row["tipo_aggiunta"];
$somma +=$row["valore_aggiunta"];
$_SESSION['aggiunta_id'][]=$aggiunta_id;
$new_product['valore_aggiunta']=$valore_aggiunta;
$new_product['descrizione_aggiunta']=$descrizione_aggiunta;
$new_product['aggiunta_id']=$aggiunta_id;
}
}
}

//controlla se ci sono opzioni
if (isset($_POST['opzione'])){
$OriginalString = $_POST['opzione'];
$matches = implode(',', $OriginalString);
$sql = "SELECT * FROM opzioni WHERE opzione_id IN ($matches)";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
$descrizione_opzione[]=$row["descrizione_opzione"];
$valore_opzione[]=$row["valore_opzione"];
$opzione_id[]=$row["opzione_id"];
$tipo_opzione[]=$row["tipo_opzione"];
$somma +=$row["valore_opzione"];
//$_SESSION['descrizione_opzione'][]=$descrizione_opzione;
$new_product['valore_opzione']=$valore_opzione;
$new_product['descrizione_opzione']=$descrizione_opzione;
$new_product['opzione_id']=$opzione_id;
}
}
}

if(isset($_POST["remove_code"]) OR isset($_POST["product_qty"])  && isset($_SESSION['coupon']))
{
    unset($_SESSION['coupon']);
}


//aggiungi prodotto alla sessione o creane uno nuovo
if(isset($_POST["type"]) && $_POST["type"]=='add' && $_POST["product_qty"]>0  )
{
unset($_SESSION['coupon']);
foreach($_POST as $key => $value){ //aggiungi tutte le variabili post all'array new_product
$new_product[$key] = filter_var($value, FILTER_SANITIZE_STRING);
}
unset($new_product['type']);
unset($new_product['return_url']);
//we need to get product name and price from database.
$statement = $conn->prepare("SELECT coupon_name,prezzo_reale,acconto,coupon_shop,multi_deal,gratis FROM coupons_coupons WHERE coupon_id=? LIMIT 1");
$statement->bind_param('s', $new_product['product_code']);
$statement->execute();
$statement->bind_result($coupon_name,$prezzo_reale,$acconto,$coupon_shop,$multi_deal,$gratis);
while($statement->fetch()){
//fetch product name, price from db and add to new_product array
$new_product["coupon_name"] = $coupon_name;
$new_product["multideal"] = $multi_deal;
$new_product["coupon_shop"] = $coupon_shop;
$prodotto=$_POST['product_code'];
$new_product["product_price"] =  $prezzo_reale+$somma; 
if(isset($_SESSION['shop'])){
}
else
{
$_SESSION['shop'][] = $new_product["coupon_shop"];
}

if(isset($_SESSION["cart_products"])){  //se la sessione var esiste già
if(isset($_SESSION["cart_products"][$new_product['product_code']])) //controlla che l'elemento esista nell'array prodotti
{
unset($_SESSION["cart_products"][$new_product['product_code']]); //annulla il vecchio elemento dell'array
}           
}
$_SESSION["cart_products"][$new_product['product_code']] = $new_product; //aggiorna o crea una sessione di prodotto con un nuovo elemento
}
}


//update or remove items
if(isset($_POST["product_qty"]) || isset($_POST["remove_code"]))
{
    //update item quantity in product session
    if(isset($_POST["product_qty"]) && is_array($_POST["product_qty"])){
        foreach($_POST["product_qty"] as $key => $value){
            if(is_numeric($value)){
                $_SESSION["cart_products"][$key]["product_qty"] = $value;
            }
        }
    }

//remove an item from product session
if(isset($_POST["remove_code"]) && is_array($_POST["remove_code"])){
foreach($_POST["remove_code"] as $key){
unset($_SESSION["cart_products"][$key]);
unset($new_product['multideal']);
unset($_SESSION['descrizione_opzione']);
}   
}
}
//back to return url
$return_url =$_POST["return_url"]; //return url
header('Location:'.$return_url);

Spero qualcuno possa illuminarmi come fare. Grazie!
 

Discussioni simili