dominios y alojamiento web en hostalia

Buscador simple en ASP mejorado

16 de octubre de 2002
Valoración del artículo:
Artículo que comenta como implementar una serie de mejoras en el buscador simple para ASP para que acepte criterios de búsqueda con palabras independientes y operadores para relacionarlas.
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
El buscador que se explica en el manual Buscador Simple para ASP se puede mejorar, como creo que ya comentamos, utilizando el script del artículo Crea tu propio buscador, que implementaba un sistema para que el sistema de búsqueda utilizase varias palabras clave y algunos operadores para relacionarlas, como el operador + o el operador espacio, que quieren decir que han de relacionarse las distintas palabras clave con la función lógica AND y OR respectivamente.

El objetivo de este artículo es realizar esa integración de un sistema con el otro y la publicación del script resultante, comentado en la medida de lo posible. Lo primero sería tener claros las dos fuentes de información con las que estamos trabajando, para lo que aconsejamos necesariamente su lectura comprensiva. Unimos los dos scripts

La página del buscador simple que tendremos que editar se llama buscar.asp. Para empezar, vamos a colocar las funciones que hay en el ejercicio Crea tu propio buscador en cualquier parte de buscar.asp, aunque preferiblemente en la parte de arriba. Estas funciones, por si alguien no las identifica, son:

function Sacar(cadena,campos)
Extrae cada uno de los campos del criterio de búsqueda introducido y los va relacionando según los operadores que se han utilizado. Todo esto lo va volcando en una sentencia en lenguaje SQL.

function GeneraSql(cadena,tabla,campos)
Crea la sentencia SQL definitiva.

Las descripciones completas de estas funciones y la explicación de sus acciones está, más o menos realizada en el artículo Crea tu propio buscador.

Editamos el script de buscar.asp para construir una sentencia SQL mejorada

La línea donde antes se construía la sentencia SQL (variable Temp.) la comentamos y la volvemos a hacer de otra manera.

Primero debemos crear un array con los campos de la tabla donde vamos a realizar las búsquedas. El array debe tener una posición más de las necesarias, porque si no nos fallará el ejemplo. Vamos a buscar en los campos "Des" y "pal" de la tabla, que contienen las descripciones y palabras clave de cada uno de los registros.

dim campos(3) 'el tamano del array debe superar en uno al numero de campos
campos(1)="Des"
campos(2)="pal"

Luego extraemos la cadena de búsqueda del formulario que estamos recibiendo
cadena=Request.form("palabra")

Creamos una variable con el nombre de la tabla de la base de datos donde hay que buscar.

tabla_bbdd="Tabla1"

Finalmente creamos la sentencia SQL realizando una llamada a la función GeneraSql comentada antes. Guardamos la sentencia SQL en la variable Temp, que era la variable donde antes se había guardado la sentencia del script buscar.asp original.

Temp=GeneraSql(cadena,tabla_bbdd,campos)

Nota: He decidido no cambiar los nombres de las variables para que el ejemplo de buscar.asp siga funcionando sin problemas.

Ya está todo

Con los cambios indicados hasta ahora ya tenemos el ejercicio terminado. Ahora las búsquedas serán mucho más complejas porque la sentencia SQL es mucho más avanzada. Las posibilidades de este script se han multiplicado.

El resto del código se deja como estaba. Al ejecutar la sentencia SQL guardada en la misma variable Temp, pero que ahora es más avanzada se produce un recordset cuyo recorrido se realiza de la misma manera que antes.

He dejado la sentencia SQL a la vista, imprimiéndola en la página, para que cualquiera que ejecute el script pueda ver qué sentencia se está generando.

Para terminar, os ofrecemos la posibilidad de que descarguéis el archivo buscar.asp modificado.

Compartir en redes sociales

Comentarios
Fueron enviados 7 comentarios al artículo
1 comentario no revisado
6 comentarios revisados:
Por: Domi
25/9/2003
Muchísimas gracias, me ha funcionado de maravilla. Tengo sólo una pregunta, la tabla de mi base de datostiene 18.900 registros, la búsqueda se demora y es necesario realizar una búsqueda más rápida, ya organicé alfabéticamente la base, y si mejoró un poco, tal vez usteden saben otro truquito!! Saludos y sigan así :)
Por: JOSE
28/2/2005
Funciona perfercto el buscador. Muchisimas gracias. Solo una consulta:
Cuando le digo que haga una busqueda de una palabra y le pongo un espacio antes o despues de esta, me da un error.
¿Existe alguna manera de solucionar esto?

Muchas gracias !!!
Por: Carlos
01/7/2005
El buscador esta bien pero a mi parecer tiene una pequeña pega. Las busquedas que se obtienen con este metodo son del tipo:

SELECT * FROM busquedas WHERE( apartado1 Like '%palabra1%' OR apartado2 Like '%palabra1%' OR apartado3 Like '%palabra1%') AND ( apartado1 Like '%palabra2%' OR apartado2 Like '%palabra2%' OR apartado3 Like '%palabra2%')

Lo realmente interesante seria que buscar asi:

SELECT * FROM busquedas WHERE( apartado1 Like '%palabra1%' AND apartado1 Like '%palabra2%' AND apartado1 Like '%palabra3%') OR ( apartado2 Like '%palabra1%' AND apartado2 Like '%palabra2%' AND apartado2 Like '%palabra3%') OR ( apartado3 Like '%palabra1%' AND apartado3 Like '%palabra2%' AND apartado3 Like '%palabra3%');

¿Como seria el codigo para este tipo de busquedas?

bryan_c...
ami nO me funciona
11/1/2010
La verdad en que le buscador si me funciono pero cuando le agregue l scrip para mejorar lo me da un error asi """"" Script error detected at line 60.
Source line: Temp=GeneraSQL(cadena,base,campos)
Description: Type mismatch: 'GeneraSQL'
alguieb sabe como puedo corregirlo

bryan_c...
NO se descarga el ARCHIVO
28/1/2010
NO SE PUEDE DESCARGAR EL ARCHIVO DE L SCRIPT MEJORADO ,LO PODRIAN PONER PORFAVOR

guitarp...
No comienza la descarga
21/4/2010
Intente descargar el buscador pero cuando estoy en la pagina de descarga, doy click en el enlace "descarga ya" y no ocurre nada

Manuales relacionados
Categorias relacionadas
El autor
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...