Iacopo Posted February 5, 2014 Share Posted February 5, 2014 (edited) Hi guys, i'm developing a simple shopping cart for a website.Everythings worked great, until i decided to make a mod in order to switch type of article token from db. Now here's the bug: every time i try to delete an item from cart, it deletes every item but the first one in the cart. Even if the quantity is more than 1... Please, help me to find this bug.. it's about 4 days that i try to solve it. Sorry for my bad english, and thank you for your help. You can't find the website here and check the bug -> http://www.pizzainncasa.com/SitoGennaio/Sito/ordinaonline.php?&request=PizzaThis is my code: ordinaonline.php (shoponline.php in english) <?php session_start(); include_once("config.php"); $request = $_GET['request']; ?> ||HTML.............|| <h1>Articoli </h1><hr><h4>Seleziona una categoria dal menù in alto per visualizzare i prodotti!</h4><br><br> <div class="products"> <?php //current URL of the Page. cart_update.php redirects back to this URL $current_url = base64_encode($url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); $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> </div> [html............] and this is the cart_update.php [php]<?php session_start(); include_once("config.php"); //aggiunge un articolo al carrello if(isset($_POST["type"]) && $_POST["type"]=='add') { $product_code = filter_var($_POST["product_code"], FILTER_SANITIZE_STRING); //salva il product code $return_url = base64_decode($_POST["return_url"]); // salva il return url $_SESSION['test'] = $product_code; //MySqli query - prende le informazioni sull'oggetto dal db utilizzando il product_code $results = $mysqli->query("SELECT Nome,Prezzo FROM Articoli WHERE ID='$product_code' LIMIT 1"); $obj = $results->fetch_object(); if ($results) { //abbiamo le informazioni sugli articoli //prepara l'array per la sessione $new_product = array(array('name'=>$obj->Nome, 'code'=>$product_code, 'qty'=>1, 'price'=>$obj->Prezzo)); if(isset($_SESSION["products"])) //se la sessione esiste { $found = false; //setta found a false 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); } ?> Edited February 5, 2014 by Iacopo Quote Link to comment Share on other sites More sharing options...
Iacopo Posted February 6, 2014 Author Share Posted February 6, 2014 help please..... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.