|
Una volta che l'utente ha completato la definizione dell'ordine,
può decidere di completarlo e effettuare l'acquisto, andando
alla "cassa" (checkout) . In questa serie prescindiamo
completamente da problematiche di transazioni monetarie. Per
supportarle dovremmo utilizzare come minimo una chiave di tipo SSL
(I<Secure Socket Layer>), avere un contratto per le carte di
credito ed eventualmente usare sistemi evoluti (e costosi) come il
SET (Secure Electronic Transaction>).
In questo articolo ci limitiamo alla memorizzazione dei dati
dell'ordine nel database. In figura 2 possiamo vedere la pagina
di inserimento dell'ordine (checkout.jsp) in cui vengono
richiesti i dati del cliente.
 Figura 2
Tali dati vengono memorizzati nel
database, come mostrato nel listato 2.
<%@ include file="head.inc" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<hr noshade>
<%
String rand = (String)session.getValue("rand");
if (rand == null || !(rand.equals(request.getParameter("rand")))) {
session.putValue("rand",request.getParameter("rand"));
String sNome=request.getParameter("Nome");
String sCognome=request.getParameter("Cognome");
String sTel=request.getParameter("Telefono");
String sFax=request.getParameter("Fax");
String sEmail=request.getParameter("Email");
String sAzienda=request.getParameter("Azienda");
String sPartIVA=request.getParameter("PartIVA");
String sInd=request.getParameter("Indirizzo");
String sCAP=request.getParameter("CAP");
String sCitta=request.getParameter("Citta");
String StringaQuery = "INSERT INTO utenti "
+"(nome,cognome,telefono,fax,email,p_iva,azienda,indirizzo,cap,citta)"
+" values ('"+sNome+"','"+sCognome+"','"+sTel+"','"+sFax+"','"
+sEmail+"','"+sAzienda+"','"+sPartIVA+"','"
+sInd+"','"+sCAP+"','"+sCitta+"')";
stat.executeUpdate(StringaQuery);
StringaQuery = "SELECT max(idUtente) FROM utenti";
ResultSet rs = stat.executeQuery(StringaQuery);
int idUtente=0;
while (rs.next()) {
idUtente=rs.getInt(1);
}
int totale = Integer.parseInt((String)session.getValue("totale"));
String ordine = (String)session.getValue("ordine");
StringaQuery = "INSERT INTO ordini (idUtente,prezzo,ordine) "
+"values ("+idUtente+","+totale+",'"+ordine+"')";
//out.print(StringaQuery);
stat.executeUpdate(StringaQuery);
}
%>
<table align=center cellpadding=10>
<tr>
<td align=center>
<font size=4><b>L'ordine è stato
inserito nel nostro database<br>
Grazie per aver scelto NetShop</b></font>
</td>
</tr>
<tr>
<td align=center>
<a href=index.jsp>Torna alla pagina principale</a>
</td>
</tr>
</table>
<% Hashtable cart = new Hashtable();
session.putValue("carrello",cart); %>
<%@ include file="foot.inc" %>
Per registrare un ordine viene semplicemente composta una query in SQL
estraendo i dati presenti nella sessione ed eseguendola, secondo
modalità di interazione con le basi di dati che sono state esposte
nell'articolo precedente. Notare che il database viene chiamato in
causa solamente quando l'utente ha completato l'ordine.
|