Discusión pormenorizada de la primera parte del archivo “busqueda.asp”
El primer gran bloque del script busqueda.asp viene precedido de la inclusión de las plantillas y scripts de lengua que ya han sido comentados en capítulos anteriores. Además de ello, se inicializa y se convierte en numérica la variable Session("num_articulos") de una forma un tanto original en el caso de que ésta no haya entrado todavía en vigor.
'Iniciamos num_articulos como un valor numerico
If Session("num_articulos")="" Then Session("num_articulos")=0
El paso siguiente es determinar de donde viene el visitante ya que, si viene de páginas exteriores, se le mostrarán las opciones principales de búsqueda y, de lo contrario, querrá decir que ya se encuentra navegando en los menús de búsqueda. Para determinar su procedencia, nos volvemos a servir de una ServerVariable ("HTTP_REFERER") que nos devuelve el valor de la URL de procedencia. Este valor lo asignamos a una variable que llamaremos "origen" que será del tipo cadena:
origen=Request.ServerVariables("HTTP_REFERER")
Así pues, si la cadena "origen" tiene incluido algún texto (subcadena) en el que aparece el nombre de cualquier página que da acceso a ésta, daremos por asumido que el visitante accede al script desde una página exterior y no desde él mismo. InStr es una instrucción que devuelve un valor que corresponde a la posición en la cadena especificada ("origen") de la ocurrencia de una subcadena también especificada. Si el valor no es nulo, quiere decir por lo tanto que la subcadena esta presente con lo que nosotros sabremos que el visitante viene de la página especificada.
If InStr(origen,"home.asp")<> 0 or InStr(origen,"anadir.asp")<> 0 or InStr(origen,"carrito.asp")<> 0 Then
Probablemente (no lo hemos intentado) el plantear la condición de esta forma podría funcionar igualmente:
If InStr(origen,"busqueda.asp")=0 Then
Dada esta condición de acceso externo, el siguiente fragmento, expresado en su mayor parte en HTML, se encarga de proponer los enlaces a las diferentes formas de búsqueda por titulo, autor o editorial. Los enlaces a los criterios de búsqueda envían a esta misma página y contienen en su URL un valor de criterio que será recogido y procesado posteriormente.
<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>
Ir la librería
'Iniciamos num_articulos como un valor numerico
If Session("num_articulos")="" Then Session("num_articulos")=0
El paso siguiente es determinar de donde viene el visitante ya que, si viene de páginas exteriores, se le mostrarán las opciones principales de búsqueda y, de lo contrario, querrá decir que ya se encuentra navegando en los menús de búsqueda. Para determinar su procedencia, nos volvemos a servir de una ServerVariable ("HTTP_REFERER") que nos devuelve el valor de la URL de procedencia. Este valor lo asignamos a una variable que llamaremos "origen" que será del tipo cadena:
origen=Request.ServerVariables("HTTP_REFERER")
Así pues, si la cadena "origen" tiene incluido algún texto (subcadena) en el que aparece el nombre de cualquier página que da acceso a ésta, daremos por asumido que el visitante accede al script desde una página exterior y no desde él mismo. InStr es una instrucción que devuelve un valor que corresponde a la posición en la cadena especificada ("origen") de la ocurrencia de una subcadena también especificada. Si el valor no es nulo, quiere decir por lo tanto que la subcadena esta presente con lo que nosotros sabremos que el visitante viene de la página especificada.
If InStr(origen,"home.asp")<> 0 or InStr(origen,"anadir.asp")<> 0 or InStr(origen,"carrito.asp")<> 0 Then
Probablemente (no lo hemos intentado) el plantear la condición de esta forma podría funcionar igualmente:
If InStr(origen,"busqueda.asp")=0 Then
Dada esta condición de acceso externo, el siguiente fragmento, expresado en su mayor parte en HTML, se encarga de proponer los enlaces a las diferentes formas de búsqueda por titulo, autor o editorial. Los enlaces a los criterios de búsqueda envían a esta misma página y contienen en su URL un valor de criterio que será recogido y procesado posteriormente.
<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>
Rubén Alvarez
Rubén es doctor en química y programador principalmente en sus ratos libres con...