Buonasera a tutti,
ho una pagina (atti.php) in cui dò la possibilità all'utente di personalizzare la sua cartellina, riempiendo dei campi di testo e scegliendo dei valori da menù a tendina.
Da atti.php, mando a riepilogo.php.
Qui l'utente visualizza un riepilogo delle scelte fatte e se vuole inserisce il prodotto scelto in un carrello.
In carrello.php, dò all'utente la possibilità di scegliere se continuare la spesa ed aggiungere altri prodotti al carrello, oppure se avviare la procedura di checkout andando in cassa.
Supponiamo che la persona scelga di mettere più di un prodotto nel carrello, memorizzo i vari prodotti in un array, poichè mi serve recuperarli successivamente.
Ciascun prodotto, infatti, una volta terminata la procedura di checkout, verrà scritto in una tabella ordini del mio DB; in più per ogni prodotto partirà una mail indirizzata al proprietario del negozio ed un'altra al compratore, con il riepilogo di ciò che si è scelto.
Così facendo però, si genera un problema con il pulsante cancella del carrello stesso.
Nel carrello, infatti, c'è un pulsante che dà la possibilità all'utente di togliere un prodotto.
In effetti, quando viene operata questa scelta, il prodotto sparisce sì dalla visualizzazione del carrello, ma non si toglie dall'array; dunque quando si completa la procedura di checkout, vengono scritte nel DB delle righe corrispondenti ai prodotti eliminati dall'utente dal carrello ed allo stesso modo partono le mail.
Posto il codice dell'array e quello del carrello, chiedendovi la cortesia di aiutarmi a risolvere questo problema che, tra l'altro, si genera anche premendo il pulsante aggiorna del carrello stesso.
Codice array:
Codice PHP:
if (!isset($_SESSION['prodotti'])) $_SESSION['prodotti'] = array();
$prodotti = $_SESSION['prodotti'];
$prodotto = array('nomecart' => $f['nome'],
'colorecarta' => $_POST['colorecarta'],
'colorestampa' => $_POST['colorestampa'],
'carattere' => $_POST['carattere'],
'quantita' => $_POST['quantita'],
'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;
Codice carrello:
Codice PHP:
$carrello = $_SESSION['carrello'];
if(@isset($_GET['action'])) {
$action = $_GET['action'];
switch ($action)
{
case 'aggiungi':
if ($carrello) {
$carrello .= ','.$_GET['id'];
} else {
$carrello = $_GET['id'];
}
break;
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;
case 'aggiorna':
if ($carrello) {
$acquisto = '';
foreach ($_POST as $key=>$value) {
if (@stristr($key,'quantita')) {
$id = @str_replace('quantita','',$key);
$prodotti = ($acquisto != '') ?
@explode(',',$acquisto) : @explode(',',$carrello);
$acquisto = '';
foreach ($prodotti as $prodotto) {
if ($id != $prodotto) {
if ($acquisto != '') {
$acquisto .= ','.$prodotto;
} else {
$acquisto = $prodotto;
}
}
}
for ($i=1;$i<=$value;$i++) {
if ($acquisto != '') {
$acquisto .= ','.$id;
} else {
$acquisto = $id;
}
}
}
}
}
$carrello = $acquisto;
break;
}
}
$_SESSION['carrello'] = $carrello;
Scusate la lunghezza del mio messaggio, ma ho cercato di essere quanto più dettagliato possibile.
Grazie,
Marco