Crear un buscador en ASP

Guardada en ASP, publicada en - Página vista 6012 veces

Como ya comentamos en el previo, este artículo tratará sobre la realización de un buscador sencillo que ejecutará sus consultas en una tabla MySQL, vamos a mostrar como realizar dos tipos de búsquedas Like y Fulltext.

Para ello, crearemos una tabla llamada «artículos» en la que ubicaremos la información que deseamos buscar, dicha tabla tendrá la siguiente estructura:

Artículos:
ID --> auto_increment
titulo --> char(100)
texto --> text

El proyecto se compondrá de un único archivo, llamado «buscador.asp», donde crearemos tanto el formulario de búsqueda como la tabla de resultados. Dicho esto, vamos a mostrar como debería ser la programación.

Antes de nada, debemos crear la conexión a la base de datos y estableceremos las variables de la aplicación, esto lo haremos de la siguiente manera:

Dim DB, RS1, Palabra, Conex, DataBase, UserBD, PassBD
Set DB = Server.CreateObject("ADODB.Connection")
Set RS1 = Server.CreateObject("ADODB.Recordset")

Conex = "localhost" 'Dirección del servidor de MySQL
Database = "buscador_asp" 'Nombre de la Base de datos
UserBD = "tu_usuario" 'Usuario para acceso a la BD
PassBD = "tu_contraseña" 'Contraseña para acceso a la BD

'Creamos la cadena de conexión
DB.open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=" & Conex & ";DATABASE=" _
& DataBase & ";USER=" & UserBD & ";PASSWORD=" & PassBD & ";OPTION=3;"

Cabe remarcar que la cadena de conexión utilizada es para el controlador ODBC 3.51 de MySQL, el cual podéis descargar desde aquí.

Una vez creadas las conexiones a la base de datos MySQL, comenzaremos con el código que mostrará el formulario de búsqueda, como vamos a mostrarlo en diferentes partes de nuestra aplicación, crearemos una función que se encargará de enseñarlo cuando nos convenga:

<%
Function MuestraForm
%>

Palabra o Frase:
Tipo de búsqueda:

Like | FullText

<%
End Function
%>

Por último, realizamos el código donde irá el listado de artículo, pegamos y luego comentamos que hace cada parte:

'SI LA PÁGINA HA SIDO DEVUELTA CON EL MÉTODO POST, SIGNIFICA QUE ESTAMOS RECIBIENDO UN FORMULARIO.
If Request.ServerVariables("REQUEST_METHOD")="POST" Then

‘Primero comprobamos que no venga la palabra vacía.
If Request.Form(«palabra»)=»» Or Request.Form(«tipo»)=»fulltext» And Len(Request.Form(«palabra»))<=3 Then
‘Si viene la palabra vacía u ocupa menos de 3 caracteres, volvemos a mostrar el formulario.
MuestraForm
Else
‘Mostramos el formulario
MuestraForm

‘Eliminamos las comillas simples si las hay
Palabra = Replace(Request.Form(«palabra»),»‘»,»»»)

‘Realizamos la búsqueda.
If Request.Form(«tipo»)=»fulltext» Then
‘BÚSQUEDA FULLTEXT
SQL = «Select titulo, id, texto, Match(titulo, texto) Against (‘» & Palabra & «‘) As Score » _
& «From articulos Where Match(titulo, texto) Against (‘» & Palabra & «‘) Order By Score DESC;»
Else
‘BÚSQUEDA LIKE
SQL = «Select titulo, id, texto From articulos Where titulo Like ‘%» & Palabra & «%’ Order By titulo ASC;»
End If

Rs1.Open SQL, DB
‘Comprobamos que hayan resultados.
If Rs1.Eof=False Then
%>

<%
‘Hacemos el bucle que mostrará los resultados.
Do While Rs1.EOf=False
%>

<%
Rs1.Movenext
Loop
%>

IDArtículo
<%=Rs1(«id»)%><%=Rs1(«titulo»)%>
<%=Left(Rs1(«texto»), 100) & «…»%>

<%
End If
Rs1.Close
End If

'SI NO ENTRA CON ESTE MÉTODO, ES QUE DEBEMOS MOSTRAR EL FORMULARIO DE BÚSQUEDA.
Else
MuestraForm
End If

Como podemos ver, la aplicación tiene un IF inicial donde filtra si la página está en estado «Post», es decir, si se recibe un formulario o no. Si recibe un formulario, automáticamente intentará realizar la búsqueda, pero antes realiza un par de comprobaciones, como por ejemplo, si la frase viene vacía o mide menos de tres caracteres. La comprobación de los tres caracteres la hacemos porque las búsquedas FullText obligan a que sea la longitud mínima de cadena.

Una vez realizado esto, la aplicación filtra si el tipo de búsqueda es Like o FullText, y construye la consulta correspondiente. Tras abrir la consulta, realiza un bucle para mostrar los resultados.

Labelgrup

Publicado por Labelgrup

Creador de páginas web, con experiencia en diferentes campos en el mundo del desarrollo web.