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
23
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
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
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
M Problema Wi-Fi Linux Linux e Software 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
Daniele_Carrara Problema Aperture Mailup Email Marketing 5
F PROBLEMA ACCESSO INSTAGRAM Discussioni Varie 2
R Problema connessione db PHP 7
M problema if PHP 2
G Problema con Get page PHP 4
N Problema passaggio variabili tra pagine PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 0
H problema carrello woocommerce PHP 2
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
M Problema su query JOIN in tre tabelle PHP 0
S Problema esportazione tabelle Mysql in Excel PHP 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
M Problema su update di 3 tabelle PHP 1
T problema con select dinamica con jquery Javascript 0
A Problema checkout carrello php PHP 2
R Problema al server Domini 0
A Problema nel passare la variabile PHP 0
G Problema update di un database PHP 0
S Problema con spazi bianchi HTML e CSS 4
E Problema motore di ricerca FULL_TEXT PHP 0
Tommy03 Problema durata cookie PHP 5
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
I PROBLEMA CODICE INSERTION SORT C C/C++ 2
I PROBLEMA CODICE C - INSERTION SORT Presentati al Forum 1

Discussioni simili