Creare carrello e-commerce (III Parte)
Terza parte del tutorial: come aggiornare il carrello ed inseririmento dei dati di spedizione e pagamento. Codice ed esempio.
Introduzione
Un carrello di e-commerce è strutturato in 4 parti principali:
- gestione articoli
- gestione carrello
- gestione ordini
- sicurezza
Verrà realizzato un negozio online che vende desktop e notebook. In questa terza parte ci occuperemo della gestione del carrello, mentre nella precedente ci eravamo occupati della gestione degli articoli.
Analisi
Il carrello è una delle parte fondamentali di un sito di e-commerce. E' spesso il punto critico per la vendita, infatti è durante gli step di un carrello che l'utente deciderà di proseguire con l'acquisto o abbandonare la sessione.
Principalmente esistono due modi per realizzare un carrello:
- con registrazione
- senza registrazione
Ognuno ha dei vantaggi e svantaggi sia dal lato "usabilità" per il cliente sia dal lato tecnico. Analizziamoli in breve.
Con registrazione
L'utente dovrà compilare un modulo molto completo e dettagliato (spesso vengono chieste informazioni inutili) per poi ricevere una username e una password che gli permetteranno di non compilare più questo modulo. Questo metodo ha come vantaggio il fatto che per futuri acquisti non è più necessario compilare nuovamente il modulo. Dal lato tecnico il procedimento è leggermente più lungo, ma non per questo difficoltoso, infatti è necessario semplicemente inserire dei dati nel database, fare un controllo di autentiticazione e un'area per gestire i propri dati, quindi dal lato tecnico l'unico contro è il maggior tempo necessario per la realizzazione della struttura.
Però se l'utente dimentica o perde i dati di accesso sarà sicuramente un motivo valido in più per non acquistare in quanto un'altra registrazione può essere lunga.
Senza registrazione
Dal lato tecnico è molto veloce e si deve far uso semplicemente di cookie's, session e se si vuol memorizzare l'ordine di un inserimento nel database. Per il cliente l'unica contro può essere quello nel compilare ogni volta il modulo di richiesta, ma questo form, al contrario del precedente, è molto breve e chiede essenzialmente i dati per l'invio e per l'eventuale fattura.
Ci sono molte variabili che influiscono sull'acquisto da parte di un cliente, come i metodi di pagamento... per maggiori informazioni consultate la nostra sezione e-commerce.
Noi adotteremo la seconda soluzione, ovvero senza registrazione. Sappiate che MrPrice adotta entrambe.
Step del carrello
In base alla tipologia del prodotto che si vende o dove lo si vende un carrello ha più o meno step. Inoltre è possibile decidere, quanti step utilizzare.
Gli step che utilizzeremo:
- aggiornamento carrello
- inserimento dati per spedizione e fattura, scelta tipo spedizione e pagamento
- riepilogo
- conferma
Nel nostro caso 4 step sono sufficienti (compresa la conferma), ma in siti che vendono in tutto il mondo, o comunque in America, Europa e Asia sono necessari maggiori passaggi.
Aggiornamento del carrello
Non utilizzando la registrazione, un metodo molto utilizzato per gestire i prodotti acquistati è l'utilizzo delle variabili di Sessione (Session), in alternativa è possibile inserire i prodotti acquistati (ID e numero pezzi) nel database, in questo caso l'unico modo per attribuire il prodotto acquistato all'utente che veramente l'ha acquistato è l'utilizzo dell' ID della Sessione: ad ogni utente che entra nel proprio sito web viene attribuito un codice identificativo univoco per tutta la durata della sessione.
Codice 15.1
<%' Cerca se il carrello è esistente, se non lo è lo crea (come un array in una sessione)If NOT isArray(Session("carrello")) thenDim carre(2,50)Elsecarre = Session("carrello")End If' POSIZIONE DELL'ARRAY' 0 = ID prodotto' 1 = Quantità Prodotto' Recupero informazioniprod_id = Trim(Request.QueryString("id_p"))' Inserimento nel carrelloIf prod_id <> "" thentrovato = False' Cerca il prodotto nell'array, se c'è aggiorna la quantità di 1, altrimenti non fa nullaFor i = 0 to UBound(carre)If carre(0,i) = prod_id thencarre(1,i) = carre(1,i) + 1trovato = True'Esci dal ciclo ForEXIT ForEnd IfNext' Se non è stato trovato il prodotto, è la prima volta che lo si inserisce con quantità = 1If NOT trovato thenFor i = 0 to UBound(carre)If carre(0,i) = "" thencarre(0,i) = prod_idcarre(1,i) = 1'Esce dal ciclo FOREXIT FOREnd IfNextEnd IfEnd If' Aggiornamento carrelloIf Request("aggiorna") <> "" thenFor i = 0 to UBound(carre)quant = Trim(Request("qp" & carre(0,i)))cancella = Trim(Request("cp" & carre(0,i)))If quant = "" or quant = "0" or cancella <> "" thencarre(0,i) = ""ElseIf isNumeric(quant) thencarre(3,i) = quantEnd IfEnd IfNextEnd If' Memorizza l'array creato o aggiornato nuovamente nella sessioneSession("carrello") = carre%><html><head><title>WebMasterPoint.org</title></head><body><p align="center"><b><font face="Verdana" size="4" color="#FF0000"><i>WebMasterPoint.org </i>e<i>Learning</i></font></b></p><p align="left"><font face="Verdana" size="2"><b>Corso:</b><br><b>Tutor:</b> Lorenzo Pascucci</font></p><p align="center"><b><font face="Verdana" size="6">CARRELLO</font></b></p><p align="center"> </p><form method="Post" action="ecomm_carrello.asp"><%' VISUALIZZAZIONE PRODOTTI NEL CARRELLO' Connessione databaseSet conn = Server.CreateObject("ADODB.Connection")sql = "SELECT * FROM prodotti WHERE id_p = " & carre(0,i)conn.open "provider=microsoft.jet.oledb.4.0;data source=" _& Server.MapPath("ecommerce.mdb")totale = 0trov = FalseFor i = 0 to UBound(carre)'Se il prodotto esiste, lo visualizzaIf carre(0,i) <> "" thentrov = True' Esecuzione querySet rs = Conn.Execute(sql) prezzo = rs("prezzo")totale = totale + carre(1,i)) * prezzo%><tr><td width="315" height="16"><font size="2" face="Verdana"><%=rs("Nome")%></font></td><td width="116" height="16"><p align="center"><font size="2" face="Verdana"><%=prezzo%> + IVA ?</font></td><td width="88" height="16"><font face="Verdana"><input type="text" name="qp<%=carre(0,i)%>" size="4" value="<%=carre(1,i)%>"></font><font size="2" face="Verdana"> pezzi</font></td><td width="24" height="16"><p align="center"><font face="Verdana"><input type="checkbox" name="cp<%=carre(0,i)%>" value="ON"></font></td></tr><%rs.closeSet rs = NothingEnd IfNextconn.closeSet conn = NothingIf NOT trov then%><tr><td width="315" height="16"><font size="2" face="Verdana">Nessun Prodotto nel Carrello</font></td><td width="116" height="16"></td><td width="88" height="16"></td><td width="24" height="16"></td></tr><%End If%><tr><td width="432" height="8" colspan="2" bgcolor="#FF9900"><p align="right"><font size="2" face="Verdana">Costo Totale:</font></td><td width="113" height="8" colspan="2" bgcolor="#FF9900"><p align="right"><font size="2" face="Verdana"><%=FormatNumber(totale)%> ?</font></td></tr><tr><td height="10" width="314"><input type="hidden" name="aggiorna" value="1"><input type="submit" value="Aggiorna" name="B1"></form></td><td height="10" colspan="3" width="228"><form method="POST" action="ecomm_carrello2.asp"><input type="submit" value="Conferma Acquisto Prodotti" name="B2"></form><p align="center"><font face="Verdana" size="2">Esempio ASP 3.0 PRO di Lorenzo Pascucci<br>WebMasterPoint.org<br>www.webmasterpoint.org</font></p></body></html>
Il funzionamento dell'utilizzo dell'array e della sessione è molto semplice.
Viene inizialmente effettuato un controllo se già esiste un array inserito nella sessione (se è il primo prodotto inserito, l'array dovrà essere creato).
If NOT isArray(Session("carrello")) thenDim carre(2,50)Elsecarre = Session("carrello")End If
Lo script preleva l' ID del prodotto che si vuol acquistare che viene passato alla pagina ecomm_carrello.asp per stringa con la variabile id_p.
Vengono poi effettuati vari controlli sull'array: in particolare viene inserito il prodotto e nel caso già lo sia viene aggiornata la quantità.
If prod_id <> "" then trovato = False ' Cerca il prodotto nell'array, se c'è aggiorna la quantità di 1, altrimenti non fa nulla For i = 0 to UBound(carre) If carre(0,i) = prod_id then carre(1,i) = carre(1,i) + 1 trovato = True 'Esci dal ciclo For EXIT For End If Next ' Se non è stato trovato il prodotto, è la prima volta che lo si inserisce con quantità = 1 If NOT trovato then For i = 0 to UBound(carre) If carre(0,i) = "" then carre(0,i) = prod_id carre(1,i) = 1 'Esce dal ciclo FOR EXIT FOR End If Next End If End If
Se l'utente vuole aggiornare le quantità attraverso il modulo o cancellare il prodotto, questo script esegue i comandi:
In questo codice abbiamo trovato fondamentalmente 3 funzioni molto importanti:
- isArray() permette di controllare se la variabile passata è un array (risultato: TrueFalse)
- isNumeric() permette di controllare se la variabile passata è un numero (risultato: TrueFalse)
- UBound() permette di individuare la capità dell'array
Inserimento dati
Lo step successivo (pagina ecomm_carrello2.asp) è chiedere le informazioni su dove inviare i prodotti acquistati e attraverso quale tipo di spedizione e tipo di pagamento si vuole il prodotto ( se previsto ). Queste informazioni possono essere memorizzate sempre nelle session.
Esempio:
Session("Nome") = Trim(Request.Form("nome"))Session("Cognome") = Trim(Request.Form("cognome"))
Le informazioni da richiedere sono essenzialmente:
- Nome
- Cognome
- Telefono
- Cellulare
- Indirizzo completo dove inviare i prodotti
- Eventuali dati per la fattura
Questi sono i dati essenziali, ed è consigliato realizzare un modulo il più facilmente e brevemente compilabile.
Riepilogo dati
E' necessario infine ricapitolare tutti i dati inseriti nella pagina ecomm_carrello3.asp:
- la lista di tutti i prodotti (senza la possibilità di modificarli)
- tutte le informazioni personali (senza la possibilità di modificarli)
- le modalità di spedizione e pagamento scelte
- costo totale (di tutti i prodotti, eventuali sconti, costo trasporto,omaggi,...)
Tutti questi dati NON devono essere modificabili perché è un riepilogo. Se si vuol modificare qualche dato, rimandare l'utente nelle pagine precedenti.
In fondo, inserire un tasto per la conferma.
Conferma
Nella pagina di conferma è necessario inserire semplicemente un messaggio di conferma, con eventualmente informazioni sul tempo di spedizione, come ricevere informazioni e come disdire l'ordine. In questa pagina infine è necessario inviare il riepilogo sia all'utente sia agli amministratori del sito.
- Articolo precedente Realizzare un sito di e-commerce (II Parte)
- Articolo successivo Creare negozio online ASP (IV Parte)