Ciao a tutti, sono svariati giorni che non riesco a uscire da una spiacevole situazione in ambiente php...
Stavo scrivendo un carrello per lo shopping collegandomi al mio db in mysql, molto semplice: ha un file di connessione al db, uno per la pagina html che mostra gli articoli e una sintesi del carrello e un file php per aggiornare il carrello, aggiungere elementi e rimuoverli.
Il bug è questo -> quando rimuovo un elemento dal carrello li rimuove tutti tranne il primo.
Probabilmente l'errore è nel file cart_update.php nel pezzo in cui rimuove l'elemento dal carrello ma non riesco proprio a capire perché e sto impazzendo, sono tre giorni che non riesco a risolverlo...
Vi copio i codici sperando in un vostro aiuto
ordinaonline.php
$results = $mysqli->query("SELECT * FROM Articoli WHERE Tipo = '$request' ORDER BY ID ASC");
if ($results)
{
//risultati dal db
while($obj = $results->fetch_object())
{
echo '<div class="product">';
echo '<form method="post" action="cart_update.php">';
//<img src="images/'.$obj->product_img_name.'" ></div>';
if($obj->product_img_name!=""){echo '<div class="product-thumb"><img width="200" height="100" src="images/'.$obj->product_img_name.'" ></div>';}
echo '<div class="product-content"><h4>'.$obj->Nome.'</h4>';
echo '<div class="product-info">Prezzo '.$currency.$obj->Prezzo.' <button class="add_to_cart">Aggiungi al carrello</button></div>';
echo '</div>';
echo '<input type="hidden" name="product_code" value="'.$obj->ID.'" />';
echo '<input type="hidden" name="type" value="add" />';
echo '<input type="hidden" name="return_url" value="'.$current_url.'" />';
echo '</form>';
echo '</div>';
}
}
?>
</div>
<div class="shopping-cart">
<h2>Il tuo carrello</h2>
<?php
if(isset($_SESSION["products"]))
{
$total = 0;
echo '<ol>';
foreach ($_SESSION["products"] as $cart_itm)
{
echo ("removing ".$_SESSION['removing']);
echo '<li class="cart-itm">';
echo '<span class="remove-itm"><a href="cart_update.php?removep='.$cart_itm["code"].'&return_url='.$current_url.'">×</a></span>';
echo '<h3>'.$cart_itm["name"].'</h3>';
echo $cart_itm['code'];
echo ('added -> '.$_SESSION['test']);
echo '<div class="p-qty">Quantita : '.$cart_itm["qty"].'</div>';
echo '<div class="p-price">Prezzo € :' .$cart_itm["price"].'</div>';
echo '</li>';
$subtotal = ($cart_itm["price"]*$cart_itm["qty"]);
$total = ($total + $subtotal);
}
echo '</ol>';
echo '<span class="check-out-txt"><strong>Totale € : '.$total.'</strong> <a href="view_cart.php">Invia l\'ordine!</a></span>';
}
else
{
echo 'Il tuo carrello è vuoto';
}
?>
</div>
cart_update.php
foreach ($_SESSION["products"] as $cart_itm) //scorre tutto l'array della sessione
{
if($cart_itm["code"] == $product_code){ //allora l'articolo è nell'array della sessione
$qty = $cart_itm["qty"]+1; //aumenta la quantità dell'articolo
$product[] = array('name'=>$cart_itm["name"], 'code'=>$cart_itm["code"], 'qty'=>$qty, 'price'=>$cart_itm["price"]);
$found = true;
}else{
//l'articolo non esiste, prendi le info vecchie e prepara l'array per la sessione
$product[] = array('name'=>$cart_itm["name"], 'code'=>$cart_itm["code"], 'qty'=>$cart_itm["qty"], 'price'=>$cart_itm["price"]);
}
}
if($found == false) //allora non abbiamo trovato l'articolo nell'array della sessione
{
//aggiungi un nuovo articolo nell'array della sessione
$_SESSION["products"] = array_merge($product, $new_product);
}else{
//abbiamo trovato l'articolo e abbiamo aumentato la quantità
$_SESSION["products"] = $product;
}
}else{
//crea una nuova variabile sessione se non esiste
$_SESSION["products"] = $new_product;
}
}
//ritorna indietro alla pagina iniziale
header('Location:'.$return_url);
}
//rimuovi un articolo dallo shopping cart
if(isset($_GET["removep"]) && isset($_GET["return_url"]) && isset($_SESSION["products"]))
{
$product_code = $_GET["removep"]; //ottieni il codice prodotto dell'articolo da rimuovere
$return_url = base64_decode($_GET["return_url"]); //ottieni l'url di ritorno
foreach ($_SESSION["products"] as $cart_itm) //scorre tutto l'array della sessione
{
if($cart_itm["code"]==$product_code) //forse l'errore è qui
{ //allora l'articolo è nell'array della sessione
$_SESSION['removing']=$cart_itm["code"]." ".$product_code;
//continua solo se la quantità è >1
//rimuovendo quello che ha quantità 0
if($cart_itm['qty']>1)
{
$cart_itm['qty']-=1;
}
}else{
$product[] = array('name'=>$cart_itm["name"], 'code'=>$cart_itm["code"], 'qty'=>$cart_itm["qty"], 'price'=>$cart_itm["price"]);
}
//setta la sessione con i valori nuovi ----> PROBABILE ERRORE IN QUESTA SEZIONE <------
$_SESSION["products"] = $product;
$product= array();
}
//ritorna indietro
header('Location:'.$return_url);
}
?>
Aiutatemi ve prego :/