Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Promoción de webs | Rentabilidad de webs
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

Enviar el pedido II


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

 Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 3 categorias relacionadas
+ 2 comentarios (Añadir)
+ 1 comentario no revisado

 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.

Versión imprimible Versión imprimible del artículo
Enviar artículo por e-mail Enviar artículo por e-mail
Añadir un comentario al artículo Publicar un comentario del artículo

Manuales relacionados con este artículo
Dentro de Librería virtual en ASP

Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en Colecciones de scripts
+ Entrar en Scripts en ASP
+ Entrar en Manuales de ASP


 Comentarios de los visitantes
Los comentarios de los visitantes son para ampliar la información del artículo. Cualquiera puede participar.
Se muestran 2 comentarios revisados

 Comentario de Miguel Angel
02/4/02 
Para empezar felicidades por el articulo, estoy desarrollando algo parecido, pero tengo un problema que no se como resolver y que en vuestro articulo no abordais. Para evitar usar mas recursos de los imprescindibles uso unas tablas temporales en la base de datos para acumular las compras en un carrito, pero mi problema es que no puedo eliminar los registros que corresponden a la sesion si el cliente cierra sin comprar, ya que desde Session_OnEnd no es posible hacerlo, como deberia resolver esto?.

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/


 Comentario de Ángel Cardiel
17/6/02 
Felicidades por este proyecto. Me gustaría que me resolvieses una duda. Quiero que en el carrito exista la posibilidad de elegir la cantidad de articulos que quiere comprar. Por ejemplo, si quiere recibir dos ejemplares de un libro, no tenga que añadirlo dos veces, si no que elija la cantidad a comprar. Gracias

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 al artículo Añadir un comentario del artículo
 Comentarios sin revisar
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
 Se ha encontrado un comentario sin revisar

Ver el comentario no revisadoVer los comentarios no revisados
Añadir un comentario al artículo Añadir un comentario del artículo



Enlaces:
Maestrosdelweb
  Ir arriba

Manuales relacionados
+Librería virtual en ASP
Categorías
+Colecciones de scripts
+Scripts en ASP
+Manuales de ASP

Lectura recomendada

Compra este libro en Agapea, la librería urgente a domicilio.

Tienda DesarrolloWeb

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia