tutorial carrello della spesa in php

zoc

Nuovo Utente
7 Mar 2010
23
0
0
ciao a tutti...
ho seguito il vostro tutorial sul carrello della spesa in php. Complimenti è fatto molto bene ed è molto capibile!

Pero' ho una domanda. Come posso fare nel caso dovessi registrare una taglia e un colore di un prodotto?
Ho visto che voi passate solo gli id all'array di sessione.

Grazie mille per la disponibilità!
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
La cosa diventa un po' più difficile. Praticamente hai bisogno di inserire un intero array come sessione. Quindi la sessione carrello conterrà una stringa trattata con la funzione serialize() che converte un array in una stringa, e poi quando hai bisogno di visualizzare i dati li trasformi di nuovo con unserialize() che effettua l'operazione opposta. Se ti serve un esempio pratico fammi sapere!
 

zoc

Nuovo Utente
7 Mar 2010
23
0
0
se mi passassi un esempio saresti gentilissimo!!!
perchè ora come ora sono in alto mare!

grazie mille!
 

zoc

Nuovo Utente
7 Mar 2010
23
0
0
mitico ale!!!!
io pensavo ad una cosa...
ma se mettiamo dei "delimitatori".... nel senso che gli elementi inseriti nell array sono:

11*giallo*XL, 12*verde*XS, 16*blu*M

cosi facendo la gestione dovrebbe rimanere la stessa, solo che quando vai a recuperare l'id devi spezzare la stringa.

È una boiata o può funzionare?
Inoltre mi chiedevo quanto potesse essere utile, invece di memorizzare tutto nella session, di inserire nel db l'ordine anche durante il riempimento, invece di farlo solo dopo la conferma ultima prima del pagamento.

grazie mille!
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Dunque, il sistema che tu proponi non è molto efficiente e presenta alcune limitazioni. Pensa ad esempio se hai un prodotto il cui nome contiene il carattere speciale che usi come delimitatore. La sessione verrebbe completamente sballata e ci potrebbero essere gravi conseguenze. Per questo PHP mette a disposizione le funzioni di serializzazione (serialize() e unserialize()). Esse si occupano di convertire qualsiasi oggetto in una stringa e viceversa, in modo che possa essere memorizzato anche dove normalmente non sarebbe consentito (un file di testo, un database...). Inoltre sono assolutamente sicure e non c'è rischio che succeda ciò di cui ho parlato qualche riga sopra.

Per quanto riguarda la memorizzazione dell'ordine sul database: sì, si potrebbe fare, e sarebbe anche più efficiente e professionale, ma non penso che ne valga la pena. Innanzitutto dovresti prepararti a priori per molte problematiche. Metti che l'utente inserisca nel carrello 100 prodotti, e poi chiuda la pagina? I dati rimarrebbero nel database ad occupare spazio, e a lungo andare potrebbe causare seri problemi. Quindi dovresti implementare un sistema che fa automaticamente scadere gli ordini non manipolati da un certo periodo di tempo. Non è complesso, però è una cosa lunga e dispendiosa in termini di tempo. Usare le sessioni invece è veloce, pratico (vengono distrutte appena l'utente chiude il browser), ed efficiente.
 

zoc

Nuovo Utente
7 Mar 2010
23
0
0
si infatti, anche io sono daccordo con te... per un sistema fatto solo di id, taglie e colori la sessione risulta la cosa migliore...
se posso darti una mano per realizzare la cosa sono a tua disposizione!
 

zoc

Nuovo Utente
7 Mar 2010
23
0
0
ciao Alessandro, mi è venuta un'idea. La condivido con voi cosi se è valida la porto avanti.

Ma se noi recuperiamo il carrello per esempio cosi:

Codice:
$carrello = array ('11' => array ('taglia' => 'XL',  'colore' => 'rosso'),
	'14' => array ('taglia' => 'S', 'colore' => 'verde'));

e poi manteniamo il sistema del vostro carrello con le varie funzioni esistenti.... dici che può risolvere la cosa?

ciao e grazie!
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
ciao Alessandro, mi è venuta un'idea. La condivido con voi cosi se è valida la porto avanti.

Ma se noi recuperiamo il carrello per esempio cosi:

Codice:
$carrello = array ('11' => array ('taglia' => 'XL',  'colore' => 'rosso'),
	'14' => array ('taglia' => 'S', 'colore' => 'verde'));

e poi manteniamo il sistema del vostro carrello con le varie funzioni esistenti.... dici che può risolvere la cosa?

ciao e grazie!
sembra che possa essere la via più semplice

P.S: per caso sei di Bologna?
 

zoc

Nuovo Utente
7 Mar 2010
23
0
0
e allora mi sa che seguo questa strada perchè la scadenza arrivaaaaa!!!
non sono di bologna, ma ci sono stato un po' di volte :)

ciao ciao
 

zoc

Nuovo Utente
7 Mar 2010
23
0
0
ragazzi ho fatto e funziona...
ecco il codice inerente al file function.php

PHP:
$id = $_POST['id'];
$colore = $_POST['colore'];
$taglia = $_POST['taglia'];
$quantita = $_POST['quantita'];

$carrello = $_SESSION['carrello'];

if (@isset($_GET['action']))
{
	$action = $_GET['action'];
	
	switch ($action)
	{
		
		case 'aggiungi':
		
			if ($carrello)
			{
				// aggiungo un elemento all'array
				$carrello[] = array ('id' => $id, 'colore' => $colore, 'taglia' => $taglia, 'quantita' => $quantita );
				
			} else {
				
				// creo l'array 'carrello'
				$carrello = array (array ('id' => $id, 'colore' => $colore, 'taglia' => $taglia, 'quantita' => $quantita ));
				
			}
		
		break;
		
		
		case 'cancella':
		
			$prod_id = $_GET['prod_id'];
			unset ($carrello[$prod_id]);
			
		break;
			
	}

}

// riempio di nuovo il carrello
$_SESSION['carrello'] = $carrello;

manca l'aggiornamento, ma il numero dei prodotti l'ho messo dove uno seleziona le taglie e i colori...

grazie per l'aiuto!!
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
metti un controllo di validazione sui dati inviati per post (magari con htmlenties), giusto per sicurezza :)
 

zoc

Nuovo Utente
7 Mar 2010
23
0
0
ok perfetto.... secondo te è il caso di farlo anche se non sono dati inseriti in campi ma sono a tendina e già controllati in javascript?

grazie!
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
si, è sempre meglio controllare tutto quello che arriva per POST o GET
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Anche perché esistono plugin per Firefox (come Firebug) che consentono di modificare il codice HTML di una pagina anche durante la sua esecuzione. Quindi si possono modificare anche i valori dei campi dei menù a tendina!
 

zoc

Nuovo Utente
7 Mar 2010
23
0
0
ultimo dubbio.
Ma htmlentities fa tutti i controlli del caso o devo anche usare il trim, addslashes ecc..??

grazie mille mila!
 

zoc

Nuovo Utente
7 Mar 2010
23
0
0
secondo te è giusto formattarle così?

$valore = trim(addslashes(stripslashes($_POST['valore'])));

grazie!
 

zoc

Nuovo Utente
7 Mar 2010
23
0
0
ma usando addslashes poi nel momento del recupero bisogna andare a usare lo stripslashes... se invece faccio addslashes(stripslashes($_POST['valore']))
non prendo due piccioni con un fava?
 
Discussioni simili
Autore Titolo Forum Risposte Data
T mysql tutorial per importare tabelle access in mysql aiuto MySQL 2
I Guida/Tutorial configurare PHPMailer per inviare mails tramite contact form? PHP 2
X come modificare paginazione del tutorial PHP 0
lucolo [VENDO] Articoli Bitcoin, recensioni, tutorial e webmaster Altri Annunci 1
P Provare un tutorial e funziona mentre nel video sembrerebbe di si PHP 30
I Tutorial per imparare a sviluppare applicazioni iOS Sviluppo app per iOS 0
P Basic4Android - Tutorial 7 (ImageView) Sviluppo app per Android 0
P Basic4Android - Tutorial 6 (ListView) Sviluppo app per Android 0
P Basic4Android - Tutorial 5 (WebView) Sviluppo app per Android 2
P Basic4Android - Tutorial 4 (CheckBox , RadioButton e ToggleButton) Sviluppo app per Android 0
P Basic4Android - Tutorial 3 (EditText) Sviluppo app per Android 0
P Basic4Android Tutorial - Designer e View Sviluppo app per Android 0
Web Designer Tutorial Photoshop Effetto pioggia: da Photoshop a Image Ready Photoshop 1
Web Designer Semplice Tutorial Photoshop Effetto Fantasma Photoshop 1
A [Tutorial] Installare Android SDK su Ubuntu Sviluppo app per Android 0
R problemi con un vostro tutorial php. PHP 0
neo996sps Tutorial sito multilingua: come memorizzare e riutilizzare selezione tramite cookie PHP 2
WpStyle WordpressStyle - Risorse tutorial & more Presenta il tuo Sito 4
Z Sito su grafica digitale, tradizionale e fotografia con tutorial a richiesta Presenta il tuo Sito 0
D problema con tutorial "Creare un forum con PHP" PHP 11
U tutorial per OOP in php? PHP 4
J The Ultimate JavaScript Tutorial in Web Design Javascript 0
neo996sps Problema con tutorial per ridimensionamento immagini PHP 10
neo996sps Problema con tutorial registrazione utenti PHP 1
riminese77 Script per creare siti web con tutorial interno CMS (Content Management System) 5
arraffaele Video tutorial per Webmatic 3.0 CMS (Content Management System) 4
W [ITA-Tutorial] XNA e 3DS MAX... da Zero .NET Framework 0
alessandro1997 [TUTORIAL] Accedere ad un server FTP come una normale cartella Linux e Software 1
I Cerco video tutorial per action script 3.0 Discussioni Varie 6
B Tutorial per login PHP 15
A vedere la pagina uguale con tutti i browser cerco tutorial HTML e CSS 2
V Guide & Tutorial Presenta il tuo Sito 4
borgo italia selec di select - tutorial ajax+php Ajax 20
borgo italia ancora su tutorial immagini php+msql PHP 13
borgo italia tutorial immagini con php e mysql PHP 2
R problemi con tutorial rotazione banner Classic ASP 3
D Tutorial ASP Classic ASP 0
L Richiesta aiuto su vs tutorial PHP 0
D Problema utilizzo tutorial community PHP 16
lukeonweb Tutorial Webmaster Presenta il tuo Sito 6
P Tutorial guestbook PHP 0
Sey Cambiare il background del lettore multimediale spiegato nei tutorial HTML e CSS 4
F tutorial guestbook senza mysql (14-06-06) PHP 1
S Visualizzare immagini caricate in un DB MySQL!! (da tutorial) PHP 18
K Help sul Tutorial di Jacopo (Creare una community ) PHP 1
G Tutorial "Come creare una community" PHP 0
Firespit Tutorial "Flash 3d Animation" Flash 0
Apeweb Nuova directory di segnalazione Tutorial Presenta il tuo Sito 0
T Segnalaci i tuoi tutorial! Presenta il tuo Sito 4
T Segnalate i vostri tutorial per photoshop e non solo! Presenta il tuo Sito 5

Discussioni simili