Problema pulsant cancella ed aggiorna del carrello

navajo75

Utente Attivo
16 Mar 2012
103
1
18
Buongiorno a tutti,

sto sviluppando un ecommerce ed utilizzando un carrello preso su Mr. Webmaster (https://www.mrw.it/php/articoli/carrello-spesa-php-mysql_769.html).
Ho la necessità di mantenere le info di ciascun prodotto inserito nel carrello e per questo ho creato il seguente array:

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;

Con questo metodo, però, ho un problema: se clicco sul pulsante cancella o su quello aggiorna del carrello, il prodotto viene si tolto od aggiornato nel carrello, ma le info ad esso relative rimangono nell'array.
Ho pensato di utilizzare la funzione unset del PHP nella parte dello script del carrello in cui è implementata la cancellazione, ma senza successo (sono una mezza sega in questo linguaggio).

Spero non si arrabbi nessuno, ma posto il seguente link: http://www.marcocristofari.it/immagineprofessionale
Ho creato un utente di test (email: [email protected] psw: test); credo serva a capire meglio il mio problema.
Nella pagina checkoutfs.php, ho stampato a video il subtotale, per far vedere che anche se un prodotto viene eliminato dal carrello, l'informazione del suo subtotale rimane nell'array.

Spero tanto possiate aiutarmi ad uscire da questo problema.
Grazie anticipatamente a tutto coloro che vorranno collaborare.

Saluti,
Marco
 

navajo75

Utente Attivo
16 Mar 2012
103
1
18
Come no, eccolo:

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;

Grazie,
Marco
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Il problema è che usi due sessioni diverse per memorizzare i prodotti nel carrello e i dati sui prodotti, e tra di esse non c'è alcuna apparente relazione che puoi usare. L'ideale sarebbe modificare lo script in modo da usare solamente la sessione carrello, memorizzandoci l'array dei prodotti acquistati. In alternativa, potresti usare gli ID dei prodotti come chiavi nella sessione prodotti, così da poterlo usare per aggiornare entrambi gli array.
 

navajo75

Utente Attivo
16 Mar 2012
103
1
18
Grazie per quello che considero essere già un grosso aiuto.
Il problema, come dicevo nel primo post, è che sono una mezza sega con il PHP.
So che non puoi scrivermi tutto il codice, però ti sarei veramente grato se, supponendo di adottare la tua prima soluzione, cioè quella d'integrare tutto nella sessione del carrello, volessi darmi un aiuto più concreto.

Grazie,
Marco
 

navajo75

Utente Attivo
16 Mar 2012
103
1
18
Ma nel frattempo non ce la fai proprio a darmi una soluzione, scrivendo un pò di codice?
Devo completare questo sito.
 

navajo75

Utente Attivo
16 Mar 2012
103
1
18
Alessandro mi dai una mano per favore?
Non riesco proprio ad uscirne.

Grazie,
Marco
 
Discussioni simili
Autore Titolo Forum Risposte Data
I Sto progettando nuovi siti utilizzando bootstrap e devo dire funziona bene, l'unico problema e la maschera -moz- HTML e CSS 0
K Problema form update PHP 2
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
S Problema nel ciclare un json Javascript 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
K Problema Inner join PHP 1
F firefox problema http Linux e Software 0
N Problema con position absolute e overflow HTML e CSS 4
E Problema jquery Success jQuery 2
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
E problema selezione sfumata Photoshop 2
K [PHP] Problema con variabili concatenate. PHP 1
A Problema filtro fluidifica Photoshop Photoshop 1
H Problema Bordi Scontorno Photoshop 1
O problema con query PHP 4
R Problema installazione Realtek WiFi USB rtl8821 Reti LAN e Wireless 0
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
Y Problema percorso file in rete PHP 1
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
P Problema acquisizione clienti Webdesign e Grafica 1
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 11
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
D problema php mysql PHP 1
D problema php mysql PHP 1

Discussioni simili