Página principal I

Entramos en el corazón de la aplicación. Mostramos el código y realizamos una primera división en partes.
Una vez realizada la elección de la lengua y franqueada la página de entrada, el navegante llega al núcleo de la aplicación. A partir de aquí, podrá buscar y comprar los libros presentes en el catálogo. Para buscar se ha ofrecido la posibilidad de hacerlo a partir de los autores, títulos e editoriales presentes en el catálogo. El catálogo ha sido almacenado en una tabla llamada "articulos". Una vez el internauta llega a los títulos correspondientes al resultado de su búsqueda, tiene la posibilidad de incluirlos en su carrito de compra que, para facilitar las cosas, tendrá un tamaño máximo de 10 artículos.

Aquí os presentamos el código de esta página busqueda.asp:

<!-- #include file="scripts_lengua/testlengua.inc" -->
<!--#include file="plantillas/connon.inc"-->
<!--#include file="scripts_lengua/lecturalengua.inc" -->
<!--#include file="plantillas/plantillahtml.inc"-->
<%
'Iniciamos num_articulos como un valor numerico
If Session("num_articulos")="" Then Session("num_articulos")=0

'Miramos de donde viene el visitante, si de la pagina de inicio o de esta misma
origen=Request.ServerVariables("HTTP_REFERER")

If InStr(origen,"home.asp")<> 0 or InStr(origen,"anadir.asp")<> 0 or InStr(origen,"carrito.asp")<> 0 Then 'Si viene de cualquier pagina menos esta
%>

   <table align="center" width="400" cellspacing="2" cellpadding="2" border="0">
   <tr><th bgcolor="#999966" align="center"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><%imprimir("busqueda")%></font><br></th></tr>
   <tr><td bgcolor="#cc9900" align="center"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><a href="busqueda.asp?criterio=titulo"><%imprimir("titulo")%></a></font><br></td></tr>
   <tr><td bgcolor="#cc9900" align="center"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><a href="busqueda.asp?criterio=autor"><%imprimir("autor")%></a></font><br></td></tr>
   <tr><td bgcolor="#cc9900" align="center"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><a href="busqueda.asp?criterio=editorial"><%imprimir("editorial")%></a><br></font></td></tr>

<%
Else 'Si viene de esta misma pagina

'Recogemos el criterio
   criterio=Request.Querystring("criterio")

'Miramos si el criterio es el titulo o no
   If criterio<>"titulo" Then 'el criterio es por autor o por editorial

%>
      <table align="center" width="400" cellspacing="2" cellpadding="2" border="0">
      <tr><th bgcolor="#999966" align="center"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><%imprimir(criterio)%></font></th></tr>
<%
'Generamos nuestra sentencia SQL y la ejecutamos
         sSQL="Select Distinct "&criterio&" From articulos"
         Set RS=Conn.Execute(sSQL)

'Imprimimos los enlaces
         While Not RS.Eof%>
            <tr>
            <td bgcolor="#cc9900" align="center"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><a href="busqueda.asp?criterio=titulo&<%=criterio%>=<%=RS(criterio)%>"><%=RS(criterio)%></a></font></td>
            </tr>
            <%RS.MoveNext
         Wend%>
<%
   Else 'el criterio es por titulo o un autor o editorial han sido elegidos
'Recogemos el segundo criterio si lo hay
      autor=Request.Querystring("autor")
      editorial=Request.Querystring("editorial")
'Generamos nuestra sentencia SQL y la ejecutamos
      If editorial="" and autor="" Then 'el internauta ha pedido la lista entera
         sSQL="Select * From articulos"
      Elseif editorial<>"" Then 'el internauta ha pedido la lista correspondiente a una editorial
         sSQL="Select * From articulos Where editorial Like '"&editorial&"'"
      Else 'el internauta ha pedido la lista correspondiente a un autor
         sSQL="Select * From articulos Where autor Like '"&autor&"'"
      End If
%>
      <table align="center" width="700" cellspacing="2" cellpadding="2" border="0">
      <tr><th bgcolor="#999966" colspan="5"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><%imprimir(criterio)%></font></th></tr>
<%
      set RS=conn.execute(sSQL)
'Imprimimos los enlaces
      While Not RS.Eof%>
         <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="anadir.asp?id=<%=RS("id_articulo")%>"><%imprimir("anadir")%></a></font></td>
         </tr>
         <%RS.MoveNext
      Wend%>
<%
   RS.Close
   End If
End If
%>
<tr><td align="center" bgcolor="#999966" colspan="5"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff">
<!-- #include file="scripts_lengua/cambiolengua.inc" -->
</font></td></tr>
</table>
<br>
<br>
<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">
<%
'Comprobamos si el carrito esta vacio, tiene un articulo o mas de uno para poner el mensaje apropiado
Select Case Session("num_articulos")
Case 0   imprimir("carrito_vacio")
Case 1   imprimir("carrito_uno")
Case Else   imprimir("carrito_muchos1")
            Response.Write " "&Session("num_articulos")
            imprimir("carrito_muchos2")
End Select
%>
<br></td></tr>
<%
If Session("num_articulos")<>0 Then
%>
<tr>
<td bgcolor="#cc9900" align="center"><FONT face="verdana,arial,helvetica" size=2 color="#ffffff"><a href="carrito.asp"><%imprimir("vercarrito")%></a></font><br></td>
</tr>
<%End If%>
</table>

<!--#include file="plantillas/connoff.inc"-->

</body>
</html>


El archivo puede ser dividido en varias partes:

-Impresión de las opciones principales de búsqueda a las que se accede desde cualquier página exterior. Llegando desde fuera, lo primero que veremos es un menú en búsqueda en función de los criterios mencionados.

-Impresión de los resultados de búsqueda a los que se accede desde esta misma página una vez que uno de los criterios ha sido elegido. Esta es la secuencia que nos permite también efectuar nuestra selección de libros.

-Estado del carrito: muestra el numero de libros presentes en el carrito y ofrece un enlace para editarlo.

En los capítulos siguientes veremos detenidamente cada una de estas partes.

Ir la librería

Autor

Rubén Alvarez

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

Compartir

Comentarios

Daniel de Miguel

12/3/2003
Hola. Un pequeño comentario. Resulta que al escribir las URL's de la tabla cuando el criterio es la editorial solamente (es decir, cuando desde busquedas.asp decides buscar un libro por editoriales y te pide que se seleccione la editorial) el link correspondiente a la editorial P&J contiene el carácter &, con lo que vuestro servidor se cree que hay un nuevo parámetro en la URL, y claro, no se listan los libros correspondientes a la editorial P&J, sino a la editorial P a secas. No sé si me explico. Creo que habría que codificar los parámetros al formato de las URL's. En java (para JSP's) existe un método que se llama URLEncode. Supongo que existirá el correspondiente en VB, pero no sé cual es. A ver si lo sabeis vosotros ;-)

RESPUESTA

Efectivamente, tenemos ese problema y no nos habíamos dado cuenta... tendríamos que revisar el ejercicio. De todos modos para vuestra información, la manera de codificar los parámetros de la URL es con el método UrlEncode() del objeto server. Así:

texto_formato_URL = server.urlEncode ("texto a colocar en la URL")