> Manuales > Librería virtual en ASP

Comentamos las dos partes de este script

Para mejor comprensión del listado pasaremos a describir en primer lugar el rellenado de los formularios que se encuentra en la segunda mitad del script.

Este fragmento comienza recuperando los posibles valores de las cookies correspondientes a los datos del cliente almacenados en visitas anteriores para evitarle trabajo:

nombre=Request.Cookies("nombre")
direccion=Request.Cookies("direccion")


Seguidamente se muestra un formulario clásico en el que algunos campos pueden estar rellenados si las cookies contenían la información. Esta parte no deja de ser una hoja HTML con pequeñas incrustaciones de código ASP:

<form action="pedido.asp" method="post" name="pedido">
<table align="center" width="400" cellspacing="2" cellpadding="2" border="0">
<tr>
<td bgcolor="#999966" align="center">
<FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><%imprimir("formulario")%></font><br>
</td></tr>
<tr>
<td bgcolor="#cc9900" align="center">
<FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><%imprimir("nombre")%></font><br>
<input type="Text" name="nombre" value="<%=nombre%>">
</td></tr>
<tr>
<td bgcolor="#cc9900" align="center"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><%imprimir("direccion")%></font><br>
<input type="Text" name="direccion" value="<%=direccion%>">
</td></tr>
<tr>
<td bgcolor="#999966" align="center">
<input type="submit" name="enviar" value="<%imprimir("enviar")%>">
</td></tr>
</table>
</form>


Ni que decir tiene que este formulario ha sido simplificado al máximo para mostrar la utilidad de las cookies en este tipo de situaciones.

Por supuesto, en un formulario de este tipo para una tienda virtual, se pediría otra serie de datos entre los cuales figuraría probablemente el numero de tarjeta bancaria o datos de cuenta. Es por ello que este tipo de páginas tienen que ser alojadas en un directorio protegido con una conexión de seguridad tipo SSL.

La segunda parte del script, localizada al principio del listado, gestiona la creación del registro en la base de datos de pedidos correspondiente a esta nueva orden.

Antes de nada, recogeremos las variables enviadas por el formulario de esta misma página y crearemos las cookies para que en futuras visitas los formularios sean rellenados automáticamente:

'Recogemos variables
nombre=Request.Form("nombre")
direccion=Request.Form("direccion")
Response.Cookies("nombre")=nombre
Response.Cookies("direccion")=direccion
Response.Cookies("nombre").Expires = #1/1/2002#
Response.Cookies("direccion").Expires = #1/1/2002#


Seguidamente leeremos el contenido del carrito, es decir, las referencias almacenadas en cada una de las variables Session(numero). Esto lo podemos hacer una a una escribiendo líneas del tipo "id(numero)=Session(numero)" o bien podemos crear un bucle como el que hemos propuesto:

Dim id(10)
For i=1 to 10
   id(i)=Cint(Session(i))
Next%>


La instrucción Dim sirve para declarar una matriz, en este caso, la matriz declarada es un conjunto de 10 elementos llamados id(numero).

Nada nos hubiese impedido pasar de esta conversión de Session en id e introducir las Session directamente en la sentencia SQL creada más adelante. Sin embargo, resulta más fácil de manipular y leer esta sentencia con variables más cortas.

El paso siguiente será confirmar que los formularios han sido rellenados satisfactoriamente, algo bastante fácil y evidente en este caso:

'Comprobamos si el formulario ha sido rellenado bien y si es asi, incluimos el pedido en la BD
   If nombre="" Then%>
      <tr>
      <td bgcolor="#cc9900" align="center"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><%imprimir("fallo_nombre")%></font><br>
      </td></tr>
      <tr>
      <td bgcolor="#999966" align="center">
      <a href="pedido.asp"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><%imprimir("volver")%></font></a>
      </td></tr>
   <%Elseif direccion="" Then%>
      <tr>
      <td bgcolor="#cc9900" align="center"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><%imprimir("fallo_direccion")%></font><br>
      </td></tr>
      <tr>
      <td bgcolor="#999966" align="center">
      <a href="pedido.asp"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><%imprimir("volver")%></font></a>


Si todo esta en orden, pasamos a la elaboración y ejecución de la sentencia SQL la cual resulta horriblemente larga y pesada:

'Generamos nuestra sentencia SQL y la ejecutamos
      sSQL="Insert Into pedidos2 (nombre,direccion,fecha,total,id_1,id_2,id_3,id_4,id_5,id_6,id_7,id_8,id_9,id_10) Values ('"&nombre&"','"&direccion&"','"&date&"',"&Session("total")&","&id(1)&","&id(2)&","&id(3)&","&id(4)&","&id(5)&","&id(6)&","&id(7)&","&id(8)&","&id(9)&","&id(10)&")"
      set RS=Conn.Execute(sSQL)


Tras haber dado las gracias al cliente y ofrecerle la posibilidad de volver a la página de entrada de la tienda damos por finalizada la sesión. Mediante la instrucción Session.Abandon que nos permite borrar de la memoria el contenido de las session.

'Damos por finalizada la sesion
      Session.Abandon


Ir la librería

Rubén Alvarez

Rubén es doctor en química y programador aficionado con experiencia en PHP.

Manual