Carrito de compras en ASP clásico

Código ASP clásico

Vamos a ver una manera sencilla de realizar un carrito de la compra en ASP, utilizando variables de sesión para guardar los productos comprados, junto con sus precios y otros datos. En estos ejemplos nos vamos a centrar exclusivamente en la funcionalidad del carrito, es decir, la memorización de los productos comprados a lo largo de toda la sesión, dejando de lado todo lo relativo a presentación o la extracción de los productos de una base de datos.

Necesitaremos guardar los id_producto de cada uno de los productos que se vayan introduciendo en el carrito. Lo haremos también utilizando variables de sesión, con esta numeracion:

session("producto1")=23
session("producto2")=30
session("producto3")=64

Con una numeración así, se puede hacer un bucle para sacar por pantalla todos los identificadores de los productos del carrito. Se haría algo como esto:

for i=1 to session("num_prod")
response.write session("producto" & i)
response.write ""
next

Ahora bien, probablemente sea útil guardar más que los simples identificadores de los productos. Si se guarda su precio y su nombre puede ser útil para mostrar rápidamente esos valores sin necesidad de acceder a la base de datos.

Los precios los puedes guardar de esta manera:

session("precio1")=200
session("precio2")=99

Los nombres de los productos los puedes guardar en variables como estas:

session("nombre1")="Reproductor DVD marca Sony"
session("nombre2")="Placa de memoria 256 MB"

Implementación, edición Global.ASA y funciones de librería

Empezamos creando un archivo Global.ASA para inicializar la variable de sesión que guarda el número de productos, llamada session("num_prod"). La variable se inicializa en el procedimiento
session_onStart().

sub session_onStart()
session("num_prod")=0
end sub

Vamos ahora con las funciones típicas del carrito que se necesitará crear en algún momento.

Introducir un producto en el carrito

Se hace con una función que recibe los datos del producto y los introduce en variables de sesión. También aumenta en uno el número de productos del carrito.

sub introduce_producto(id,texto,precio)
session("num_prod") = session("num_prod") + 1
session("producto" & session("num_prod")) = id
session("nombre" & session("num_prod")) = texto
session("precio" & session("num_prod")) = precio
end sub

El incremento se hace al principio porque el numero de productos inicialmente es cero y el primer producto a insertar deseamos que tenga el índice uno.

Borrar un producto del carrito

Debemos disponer de una función que nos permita eliminar un producto del carrito. En este caso voy a crear una función que recibe el número de línea del producto dentro del carrito. Podríamos recibir también el identificador del producto a borrar o incluso puede ser que nos sea útil crear un par de funciones para borrar productos del carrito, una recibiendo la línea del carrito y otra recibiendo el identificador del producto. Para este ejemplo me resulta más fácil recibir la línea en la que está ese producto en el carrito.

sub borra_producto(i)
session("producto" & i) = 0
end sub

Simplemente colocamos a cero el identificador de producto a borrar. No borramos directamente las variables de sesión porque eso nos obligaría a recolocar todos los índices de las variables de sesión para que fuesen correlativos. Este detalle tendremos que tenerlo en cuenta a la hora de mostrar el carrito, pues si el identificador de producto es cero, se entiende que el producto está eliminado del carrito.

Tampoco disminuimos en uno el número de productos, porque en realidad no estamos eliminando un producto de la estructura de datos, sino que lo estoy marcando a cero para saber que no hay nada que contabilizar en ese caso.

Código para mostrar el contenido del carrito.

La última función de las que vamos a ver aquí sirve para mostrar todos los productos del carrito. Tiene que hacer un simple bucle que recorra todas las variables de sesión creadas al meter productos en el carrito. Debe mostrar los datos de cada producto según se recorre con el bucle. Además, debe proporcionar el importe total de la compra y un enlace para quitar cualquier producto del carrito.

sub muestra_carrito()
precio_total=0
if session("num_prod")=0 then
response.write "el carrito está vacío"
else
for i=1 to session("num_prod")
response.write "linea de producto " & i & ""
if session("producto" & i) 0 then
response.write "Identificador de producto " & session("producto" & i) & ""
response.write "Nombre de producto " & session("nombre" & i) & "&l5;br>"
response.write "Precio de producto " & session("precio" & i) & ""
response.write "Borrar producto"
precio_total = precio_total + session("precio" & i)
else
response.write "Este producto ha sido borrado del carrito"
end if
response.write ""
next
response.write "El precio total del producto es " & precio_total & ""
end if
end sub

La función declara primero la variable precio_total donde se guardará la suma de importes de los productos.

Luego comprueba el número de productos, porque si es cero significa que no hay nada en el carrito y debería indicarse así.

Si había productos en el carrito, se muestran todos los productos con un bucle que recorre las líneas del carrito, desde la primera hasta el número de productos. En cada línea del carrito se muestran sus datos, teniendo cuidado porque si el identificador del producto era cero quería decir que ese producto había sido borrado del carrito. Además, acumulamos en la variable precio_total el importe de todos los productos del carrito que no han sido borrados previamente.

Finalmente, aunque todavía dentro del bucle, colocamos un enlace para que el visitante pueda eliminar un producto del carrito. Hay que darse cuenta que el enlace para borrar un producto indica como parámetro la línea del carrito que se debe borrar, que era lo que nosotros necesitábamos en la función creada para borrar los productos.

Ya fuera del bucle, imprimimos el importe total con la suma de los importes de los productos que hemos ido acumulando durante el bucle.

Ejemplos sencillos de uso de las librerías que usa el carrito

Para ilustrar el funcionamiento de la librería del carrito vamos a realizar unas páginas donde podremos utilizarlas. Realmente son unas páginas sencillas, el trabajo duro ya se realizó al crear el propio carrito.

index.asp

La página de inicio muestra una lista de objetos para comprar. Esta lista está completamente inventada sobre la marcha, pero en nuestros ejemplos lo lógico sería que la extrajéramos de una base de datos.

Trabajando con el carrito...

Compra Secadora Magestic (id=12) por 200 euros.

Compra un Corta uñas Metálico (id=28) por 3 euros.

Compra Nevera Supercombi (id=5) por 550 euros.

Compra Colchón Cómodo y Blandito(id=7) por 430 euros.

Compra Silla Masaje Permanente (id=15) por 890 euros.

Muestra el carrito

introduce_producto.asp

Esta página introduce el un producto en el carrito de la compra. Recibe los datos del producto a introducir por la URL.

Introduce un producto

Volver

muestra_carrito.asp

La página que muestra el carrito es básicamente una llamada a la función de la librería que se encarga de mostrar el carrito de la compra y la suma de los precios de los productos.

tags: carros de compras, asp base de datos, crear punto de venta, hacer un carrito de compras, como hacer un carrito de compras, como hacer un carro de compras, carrito de compras asp, ejemplo carrito de compras, carro de compras asp, carro de compas asp

En esta sección encontrarás una mezcla de códigos recopilados de fuentes públicas de Internet y otros creados por ASP TEAM. Compartimos recursos útiles de buena fe para formar una base de conocimiento en el desarrollo de aplicaciones en ASP Clásico.