Buongiorno a tutti,
ho implementato nel mio sito un carrello che, tra le altre cose, offre la possibilità di eliminare i prodotti scelti.
codice:
<a href="carrello.php?action=cancella&id='.$id.'" title="Elimina il prodotto dal carrello">
Cancella
</a>
Il link sopra chiama una funzioncina all'interno di uno switch che riporto di seguito
Codice PHP:
case 'cancella':
if ($carrello) {
$prodotti = @explode(',',$carrello);
$acquisto = '';
foreach ($prodotti as $prodotto) {
if ($_GET['id'] != $prodotto) {
if ($acquisto != '') {
$acquisto .= ','.$prodotto;
} else {
$acquisto = $prodotto; }
}
}
$carrello = $acquisto;
}
break;
In effetti il prodotto viene si eliminato dal carrello, ma finisce comunque nella tabella ordini del mio DB.
Questo accade perchè, prevedendo che gli utenti possano acquistare più di un prodotto, ho avuto la necessità di memorizzare le informazoni dei vari prodotti scelti in un array che sia anche una variabile di sessione e che qui di seguito riporto
Codice PHP:
if (!isset($_SESSION['prodotti'])) $_SESSION['prodotti'] = array();
$prodotti = $_SESSION['prodotti'];
$prodotto = array('nomecart' => $f['nome'],
'colorecostine' => $_POST['colorecostine'],
'colorecarta' => $_POST['colorecarta'],
'colorestampa' => $_POST['colorestampa'],
'carattere' => $_POST['carattere'],
'quantita' => $_POST['quantita'],
'quantita_arch' => $_POST['quantita_arch'],
'quantita_21297' => $_POST['quantita_21297'],
'quantita_1521' => $_POST['quantita_1521'],
'titolo' => $_POST['titolo'],
'caratteretitolo' => $_POST['caratteretitolo'],
'sottotitolo' => $_POST['sottotitolo'],
'caratteresottotitolo' => $_POST['caratteresottotitolo'], 'indirizzocart' => $_POST['indirizzocart'],
'carattereindirizzocart' => $_POST['carattereindirizzocart'], 'telfaxcell' => $_POST['telfaxcell'],
'caratteretelfaxcell' => $_POST['caratteretelfaxcell'], 'emailsito' => $_POST['emailsito'],
'carattereemailsito' => $_POST['carattereemailsito'],
'subtotaleco' => $f['prezzo'],
'modello' => $_POST['modello'],
'layout' => $_POST['layout']);
$prodotti[] = $prodotto;
$_SESSION['prodotti'] = $prodotti;
Deve esistere una maniera che mi consenta di eliminare il prodotto che non voglio più acquistare e nello stesso tempo far in modo che ciò che la sessione ha mantenuto in memoria, per quel prodotto stesso, venga cancellato; non riesco a farlo ed è molto tempo che ci sto sbattendo la testa.
Per dovere di cronaca devo dire che già mesi fa avevo aperto un thread al riguardo e se decido di rifarlo oggi, sperando che nessuno si arrabbi, è per più di un motivo.
Innanzitutto perchè devo risolvere per poter consegnare il sito al cliente.
In secondo luogo perchè nonostante la collaborazione di alcune persone, la volta scorsa non sono comunque riuscito a risolvere.
Infine perchè credo che in questo nuovo thread abbia spiegato meglio qual è il problema.
Saluti a tutti,
Marco