Redazione
a- a+

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")) then
Dim carre(2,50)
Else
carre = Session("carrello")
End If

' POSIZIONE DELL'ARRAY
' 0 = ID prodotto
' 1 = Quantità Prodotto

' Recupero informazioni

prod_id = Trim(Request.QueryString("id_p"))

' Inserimento nel carrello

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

' Aggiornamento carrello

If Request("aggiorna") <> "" then
For 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 <> "" then
carre(0,i) = ""
Else
If isNumeric(quant) then
carre(3,i) = quant
End If
End If
Next
End If

' Memorizza l'array creato o aggiornato nuovamente nella sessione
Session("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">&nbsp;</p>
<form method="Post" action="ecomm_carrello.asp">
<%
' VISUALIZZAZIONE PRODOTTI NEL CARRELLO

' Connessione database
Set 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 = 0
trov = False
For i = 0 to UBound(carre)

'Se il prodotto esiste, lo visualizza
If carre(0,i) <> "" then
trov = True


' Esecuzione query
Set 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&nbsp;?</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.close
Set rs = Nothing

End If
Next

conn.close
Set conn = Nothing
If 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)%>&nbsp;?</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")) then
Dim carre(2,50)
Else
carre = 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
  • Email
  • 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.



Ti potrebbe interessare anche

commenta la notizia

Ci sono 1 commenti
olibob41
ciao! ho un problema ho sito internet che non si occupa di e-comerce vero e proprio ma di creare una "lista della spesa" vi sono foto o altro in una tabella in diverse pagine del sito html, praticamente ho bisogno di inserire un pulsante accanto che invi i dati memorizzati (stile paypal) e crei una lista/carrello.
e invi puoi la lista ad un mail che deve essere inserire dal utente ( le liste sono inviate a persone differenti, per esempio gianni crea la lista e la invia a mario..)