Salve,
allora ho un "piccolo" quanto "complicato" (per me) problema...
Io ho un carrello per un e-commerce, con un array che mi sta dentro una sessione e che mi tiene tutti gli oggetti (id e quantità)... solo che non riesco ad eliminare un oggetto dal carrello.
Vi posto il codice:
codice:
<?
class prodotto {
function prodotto ($id, $q) {
# id è l'id del prodotto
# q è la quantità acquistata
$this->id = (int) $id;
$this->q = (int) $q;
}
}
session_start();
IF (!isset($_SESSION['utente'])) {
#reindirizzamento su un altra pagina...
} else {
bla bla bla...
#quando inserisco un oggetto nel carrello succede questo...
#lo aggiunge all'array
$_SESSION['shop'][] = new prodotto ($idprodotto, $quantità);
?>
Fino a qui ci siete? Spero di si...
Quindi facendo così lui mi crea l'array in modo sequenziale...
Quindi
$_SESSION['shop'][0] // Ci saranno due valori.. id e quantità
$_SESSION['shop'][1] // Ci saranno due valori.. id e quantità
$_SESSION['shop'][2] // Ci saranno due valori.. id e quantità
$_SESSION['shop'][3] // Ci saranno due valori.. id e quantità
E così via...
E fin qua tutto oki... ho fatto anche l'aggiornamento della quantità e va benissimo.
Ma veniamo al punto...
Per stampare il carrello eseguo il seguente ciclo while
codice:
while (list ($indice,$contenuto) = each ($_SESSION['shop'])) {
$idpr = $_SESSION['shop'][$indice]->id; //id prodotto
$qpr = $_SESSION['shop'][$indice]->q; // quantità prodotto
# Select sui prodotti per il carrello
$asd = "SELECT * FROM prodotti WHERE id_prodotto='".$idpr."'";
$lolasd = mysql_query($asd,$conn) or die('Errore durante la query: '. mysql_error());
$llsd= mysql_fetch_array($lolasd);
Faccio la select e mi vado a stampare tutte le varie voci associate a quel prodotto, scorrendo tutti i prodotti con il while.
Quindi nel carrello stampo il titolo, la quantità, il costo dell'oggetto e un pulsante elimina che si porta dietro l'id dell'array dove è contenuto il prodotto.
Fin qui tutto oki...
Ora nella pagina "delprod.php" io dovrei cancellare il prodotto (id e quantità) contenuto nell'indice dell'array che sarebbe la variabile "$PID$.
Pagina di delete:
codice:
$id=$_GET['pid'];
#Eliminazione Prodotto
unset($SESSION['shop'][$id]);
#Reindirizzamento Carrello
header("Location: carrello.php");
Solo che quest'ultimo passaggio, nonostante nn mi dia errore e mi reindirizzi al carrello, non mi elimina quell'indice di quell'array.
Ora lo so sono stato lungo nel topic, ma spero che sia servito per far capire il problema, cioè che l'unset non me lo cancella.
Sono quindi qui a richiedere (se disponibile) il vostro aiuto...
Ciao e Grazie Mille anche solo per averlo letto!
P.S.
Qualsiasi risposte, o consigli sono ben accetti.