| Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | ||||
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
| Autoría, licencia y acciones sobre este artículo | ||||||
|
Informe de Rubén Alvarez*
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright. * Para consultas técnicas utilizar la lista de correo.
|
| Los comentarios de los visitantes son para ampliar la información del artículo. Cualquiera puede participar. |
| Se muestran 2 comentarios revisados |
RESPUESTA:
Pues deberías encontrar otro momento para hacer esas comprobaciones y los consiguientes borrados de registros antiguos. Por ejemplo, podrías organizarlos cuando un usuario se conecta... que borrre los registros que se hicieron hace más de una hora. También podrías crear una tarea que se ejecute cada hora y que borre los registros que se crearon de más de una hora. O algo así que se te ocurra. También puedes ver qué sugerencias se les ocurren a los compañeros de la lista de correo de ayuda: http://www.desarrolloweb.com/listacorreo/
Respuesta
Si deseas hacer eso necesitarás utilizar una estructura de datos más compleja que una simple variable. Por ejemplo podrías utilizar un array.
En las variables de session puedes guardar cualquier cosa y, por supuesto, un array también. Así que puedes definir el array como lo haces habitualmente y una vez que lo tienes relleno lo puedes meter en la variable de session.
Cuando desees utilizarlo, debes asignar esa variable de session a una variable local en la página y utilizar esa variable como si fuera un array.
A ver si tengo un rato para explicar esto detenidamente...
| Añadir un comentario del artículo |
| Comentarios sin revisar |
| Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente. |
| Ver los comentarios no revisados |
| Añadir un comentario del artículo |
| Enlaces: |
| Maestrosdelweb |
Lectura recomendada Compra este libro en Agapea, la librería urgente a domicilio. |
||||||||||||
Tienda DesarrolloWeb