Ciao,
è anche vero che puoi aggiungere un campo con la data in cui è stato aggiunto il prodotto nella tabella carrelli e di conseguenza cancelli i carrelli vecchi con semplici calcoli; comunque un esempio breve con le sessioni è:
Codice PHP:
//Aggiungere un prodotto al carrello
session_start();
$idprod = (int)$_GET['idprodotto']; //Forzi la variabile GET con (int) per evitare attacchi
$query = mysql_query("select * from prodotti where id='$idprod'");
$p = mysql_fetch_array($query);
$_SESSION['cart'][$idprod]['nomeprodotto'] = $p['nome'];
$_SESSION['cart'][$idprod]['qta'] += 1;
$_SESSION['cart'][$idprod]['codice'] = $p['codice'];
$_SESSION['cart'][$idprod]['prezzo'] = $p['prezzo'];
Per stampare a video tutti i prodotti del carrello:
Codice PHP:
//Stampare a video prodotti del carrello
session_start();
foreach($_SESSION['cart'] as $chiave=> $valore) {
echo "id prodotto: ".$chiave."\n";
echo "nome prod: ".$valore['nomeprodotto']."\n";
echo "codice prod: ".$valore['codice']."\n";
....
}
Così facendo eviti di occupare spazio nel db e se chiudono o scade la sessione, il carrello diventa vuoto ($_SESSION['cart'])
Ovviamente quando è il momento del pagamento, ti conviene comunque fare delle query di controllo, in caso avessi cambiato dei dati(tipo il codice, o addirittura il prezzo), mentre l'utente aggiungeva i prodotti nel carrello.
Infine,fai vedere il riepilogo.
E poi dovresti stare attento facendo uso delle transazioni per evitare anomalie con le quantità disponibili...(c'è una pillola sul forum se nn erro)
Spero sia stato chiaro.
Un saluto
Alberto