Ver y editar el carrito II

Describimos en detalle cada una de las partes de este programa
El script, como hemos dicho, puede ser dividido en dos fragmentos principales.

El primero de estos fragmentos gestiona el borrado de alguno de los elementos. Este fragmento ha de ser colocado antes de la apertura de la etiqueta HTML puesto que dentro de él introducimos un Response.Redirect que tiene como función enviar al navegante a otra página. Este tipo de acciones, como ya paso para la creación de cookies, deben de realizarse en primer lugar.

El primer paso es, como viene ya siendo un rito, recoger las variables que hayan podido ser enviadas. En este caso, cuando se realiza un borrado, se envía una variable por URL llamada "borrar" conteniendo como valor la referencia del libro que se quiere eliminar. Esta variable, recibida como cadena como todas las variables que se recuperan de un formulario o de una URL, es transformada en numero entero mediante la función Cint:

'Recogemos la variable borrar
borrar=CInt(Request.Querystring("borrar"))


Una vez recuperada y transformada la variable borrar pasaremos a comprobar que su valor no es nulo, lo que significa que se quiere borrar un articulo del carrito. Para borrarlo, lo que hay que hacer es:

1.-Localizar en qué posición se encuentra en el carrito. Dicha posición será guardada como una variable de nombre "i"

i=1
Do While borrar<>CInt(Session(i))
   i=i+1
Loop


2.-Dar a esa posición otro valor de referencia que será la del libro localizado en una posición más adelante. Repetir ese procedimiento tantas veces como artículos tengamos. En otras palabras, estamos desplazando en una posición hacia atrás los valores de las referencias para ocupar correctamente cada posición y hacer desaparecer la referencia que deseamos borrar.

For j=i to Session("num_articulos")
   Session(j)=Session(j+1)
Next


3.-Declaramos un articulo menos en nuestro carrito

Session("num_articulos")=Session("num_articulos")-1

4.-Comprobamos que el carrito no esta vacío, de lo contrario, enviamos al navegante a la página de búsquedas:

If Session("num_articulos")= 0 Then Response.Redirect("busqueda.asp")

El segundo fragmento se encarga de mostrar en pantalla el contenido del carrito y decirnos cuál es el valor de la compra. El funcionamiento no difiere en gran cosa con respecto a otras llamadas a base de datos que hemos efectuado.

Ante todo, lo primero es iniciar dos variables que usaremos en el proceso: El contador de artículos "i" y el total de la compra que será almacenado como una Session:

'Iniciamos las variables
i=1 'contador de artículos
Session("total")=0 'precio del pedido


Para sacar en pantalla los objetos usamos de nuevo un bucle tipo While que se llevará a cabo mientras que el contador de artículos no exceda el número de artículos, dicho de otra forma, se realizará tantas veces como libros haya en el carrito.

Dentro de este bucle colocaremos una llamada a la base de datos que buscará las características del artículo cuya referencia haya sido almacenada en nuestra variable Session(numero), además, añadiremos el precio del libro al valor total del pedido e imprimiremos las características de la obra en cuestión:

'Comenzamos la impresion de los artículos del carrito 
While i<=Session("num_articulos") 
   id=Session(i) 
'Generamos nuestra sentencia SQL y la ejecutamos 
   sSQL="Select * From articulos Where id_articulo="&id 
   set rs=conn.execute(sSQL) 
'Calculamos el precio del pedido 
   Session("total")=Session("total")+rs("precio")
%>
   <tr>
   <td bgcolor="#cc9900"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><%=RS("titulo")%></font></td>
   <td bgcolor="#cc9900"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><%=RS("autor")%></font></td>
   <td bgcolor="#cc9900"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><%=RS("editorial")%></font></td>
   <td bgcolor="#cc9900"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><%=RS("precio")%></font></td>
   <td bgcolor="#cc9900"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><a href="carrito.asp?borrar=<%=rs("id_articulo")%>"><%imprimir("borrar")%></a></font></td>
   </tr>
<%
   i=i+1
   rs.Close
Wend%>


Finalizado el bucle pasamos a mostrar el valor total del pedido y proponemos los enlaces para enviarlo (pedido.asp) o bien continuar con las compras (busqueda.asp):

<td align="center" bgcolor="#cc9900" align="center" colspan="5"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><%imprimir("total")%>: <%=Session("total")%></font></td>
</tr>
<tr>
<td align="center" bgcolor="#999966" align="center" colspan="5"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><a href="pedido.asp"><%imprimir("pedido")%></a>      <a href="busqueda.asp"><%imprimir("volver")%></a></font></td>


Ir la librería