|
|
|
A lo largo de que vamos incluyendo material en nuestra web, además de clasificarlos correctamente, si nos ponemos en el lugar del visitante que busca "algo en especial", necesitarás un BUSCADOR INTERNO ¡No te asustes!, sigue leyendo que en pocos minutos aprenderás a crear uno...
Empecemos con la base de datos; tenemos dos formas de hacerlo, que el usuario busque en la DESCRIPCIÓN del registro de la base de datos (por ej. Un artículo), esta descripción es la que aparece junto al título en los resultados de la búsqueda. O la otra alternativa (la que usaremos en el artículo) es hacer un campo PALAC (es decir PALABRAS CLAVE), en el que el usuario busca palabras clave de cada "objeto" (registro)
¡Manos a la obra! Empecemos abriendo Microsoft Access; creemos una nueva tabla en modo DISEÑO, tal como lo muestra la figura
Figura 1: los campos y el tipo de campo que necesitamos
Ahora los tamaños del campo le asignamos: PALAC: 180 caracteres máximo Link: 80 caracteres máximo Titulo: 80 caracteres máximo
OK, ahora viene la parte más "fea" del asunto, ingresar todo en la base de datos, (ver Figura 2)
 Figura 2: Ingresamos los datos
Ahora vayamos a ASP, abran su editor HTML, o el simple notepad, lo que ustedes quieran, lo importante es que se vea el código de fuente, yo particularmente uso Dreamweaver. Creamos el archivo que se llame BUSCAR.ASP (aunque por ahora sólo tiene HTML), su contenido es
<html> <head> <title>Buscar</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head>
<body bgcolor="#FFFFFF" text="#000000"><center> <b><font size="5">MI BUSCADOR</font></b> <form name="form1" method="post" action="Buscar.asp"> <input type="text" name="textfield"> <input type="submit" name="Submit" value="Buscar!"> </form></center> </body> </html>
Ahora sólo contiene el formulario, pero veamos ¿cómo podemos impelemntar el ASP? Muy fácil, como podemos observar el código el formulario tiene como "ACTION" buscar.asp, es decir el mismo archivo, ahora vamos a ver como recibimos a la colección Request.form para saber la palabra a buscar;
<% Dim buscar buscar = Request.Form("textfield") %>
¿Fácil, no? Ahora, donde queramos que aparezcan los resultados, vamos a poner el siguiente código (no te preocupes, ahora te enseñamos como funciona):
<% Function fBuscar(cnn) Dim rs Dim SQL Dim str SQL="SELECT Titulo, Comentarios, PALAC, Link FROM Busqueda WHERE PALAC LIKE ´%"&buscar&"%´;" Set rs = CreateObject("ADODB.Recordset") rs.ActiveConnection = cnn rs.Open SQL While Not rs.EOF str = str & "<A Class=´t5´ Href=´" & rs("Link") & "´>" & rs("Titulo") & " >> <br>" & "</a>" & rs("Comentarios")& "<BR> <BR>" rs.MoveNext Wend if str = "" then str ="<CENTER><B>Lo siento, no se encontraron resultados</B></CENTER>" if buscar = "" then str ="<CENTER><B>Por favor, especifique su búsqueda</B></CENTER>" fBuscar = str End Function Dim cnn Dim str Set cnn = CreateObject("ADODB.Connection") str = "Data Source=Pafware" cnn.Open str Response.write "<FONT COLOR=Blue " Response.write "SIZE=4 FACE=Arial> " Response.write "Resultados " Response.write "de la busqueda: <P>" Response.write "</FONT> " Response.write "<FONT COLOR=Green " Response.write "SIZE=3 FACE=Arial> " Response.Write fBuscar(cnn) Response.write "</FONT><hr> " %>
Bueno, analicemos un poco el funcionamiento de esto: El foco del programa entra donde declaramos las variables CNN y STR las cuales declaramos como conexión la Base de Datos, y a STR le damos el valor de la cadena que luego usaremos para darle como parámetro a CNN.OPEN. Luego escribimos "Resultados de la búsqueda:" y llamamos la la función fBuscar, y le pasamos como parámetro nuestro objeto de conexión (CNN). Definimos RS, SQL y STR, usaremos RS para el RecordSet, SQL para la sentencia SQL, y STR para depositar toda la información que saquemos del recordset. Tomémonos un minuto para analizar el corazón de nuestro buscador, la sentencia SQL;
SQL="SELECT Titulo, Comentarios, PALAC, Link FROM Busqueda WHERE PALAC LIKE ´%"&buscar&"%´;"
Aquí le decimos a SQL que tome (SELECT) los campos Titulo, Comentarios, PALAC y LINK de la tabla BUSQUEDA donde (WHERE) PALAC contenga (LIKE) algo como el valor de la variable buscar (que contiene la cadena a buscar). Ahora abrimos el RecordSet con la sentencia SQL, y obviamente, nos devuelve los resultados
rs.Open SQL
Bueno, nos queda sólo mostrar los resultados obtenidos, los atravesamos con un bucle For Each, mostrando cada registro y sus campos, por ej. rs("Titulo") tendría el valor de titulo del registro actual
While Not rs.EOF str = str & "<A Class=´t5´ Href=´" & rs("Link") & "´>" & rs("Titulo") & " >> <br>" & "</a>" & rs("Comentarios")& "<BR> <BR>" rs.MoveNext Wend
De esta forma podemos observar como almacenamos registro por registro encontrado en la variable STR, (en formato Titulo (linkeado) >> <br> Comentarios <br><br>)
Bueno, llegado a este punto se preguntarán ¿ya está, no?, bueno, la respuesta es no, aún nos quedan cosas por hacer ¿qué para si no se encontraron resultados, no podemos dejar que "no pase nada"? ¿qué pasa si el usuario ingresa una cadena nula, es decir ""? Esto lo arreglamos con:
if str = "" then str ="<CENTER><B>Lo siento, no se encontraron resultados</B></CENTER>" if buscar = "" then str ="<CENTER><B>Por favor, especifique su búsqueda</B></CENTER>"
Bueno, podemos ver que esto hace que si STR sea = "", es decir, que no se encontraron resultados, le asigne el valor "Lo siento, no se encontraron resultados" o que si la cadena a buscar no contiene nada, muestre "Por favor, especifique su búsqueda".
Bueno, les dejo el código completo ;) así lo copian y pegan en su web...
<html> <head> <title>Buscar</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <% Dim buscar buscar = Request.Form("textfield") %>
<body bgcolor="#FFFFFF" text="#000000"><center> <p><b><font size="5">MI BUSCADOR</font></b> </p> <% Function fBuscar(cnn) Dim rs Dim SQL Dim str SQL="SELECT Titulo, Comentarios, PALAC, Link FROM Busqueda WHERE PALAC LIKE ´%"&buscar&"%´;" Set rs = CreateObject("ADODB.Recordset") rs.ActiveConnection = cnn rs.Open SQL While Not rs.EOF str = str & "<A Class=´t5´ Href=´" & rs("Link") & "´>" & rs("Titulo") & " >> <br>" & "</a>" & rs("Comentarios")& "<BR> <BR>" rs.MoveNext Wend if str = "" then str ="<CENTER><B>Lo siento, no se encontraron resultados</B></CENTER>" if buscar = "" then str ="<CENTER><B>Por favor, especifique su búsqueda</B></CENTER>" fBuscar = str End Function Dim cnn Dim str Set cnn = CreateObject("ADODB.Connection") str = "Data Source=Pafware" cnn.Open str Response.write "<FONT COLOR=Blue " Response.write "SIZE=4 FACE=Arial> " Response.write "Resultados " Response.write "de la busqueda: <P>" Response.write "</FONT> " Response.write "<FONT COLOR=Green " Response.write "SIZE=3 FACE=Arial> " Response.Write fBuscar(cnn) Response.write "</FONT><hr> " %> <form name="form1" method="post" action="Buscar.asp"> <input type="text" name="textfield"> <input type="submit" name="Submit" value="Buscar!"> </form></center> </body> </html>
|
|