Top 5 ASPCategoríasBuscador
|
Su dominio en 24 horas |
|||||||||||||||||||||||||||||
Estás en ASP |
Fecha: 16/07/2007 |
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
%>
<form action="buscador.asp" method="post">
<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Palabra o Frase: <input name="palabra" type="text" /></td>
<td><input name="" type="submit" value="Buscar!" /></td>
</tr>
<tr>
<td>
Tipo de búsqueda:<br />
<input name="tipo" type="radio" value="like" /> Like | <input name="tipo" type="radio" value="fulltext" checked="checked" /> FullText</td>
<td></td>
</tr>
</table>
</form>
<%
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
%><br />
<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><strong>ID</strong></td>
<td><strong>Artículo</strong></td>
</tr>
<%
'Hacemos el bucle que mostrará los resultados.
Do While Rs1.EOf=False
%>
<tr>
<td><%=Rs1("id")%></td>
<td><%=Rs1("titulo")%></td>
</tr>
<tr>
<td colspan="2"><%=Left(Rs1("texto"), 100) & "..."%></td>
</tr>
<tr>
<td colspan="2"><hr /></td>
</tr>
<%
Rs1.Movenext
Loop
%>
</table>
<%
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.
Para que todo quede más claro, os dejo el archivo con los ejemplos y el fichero con la base de datos.
|
| Lecturas: 2005 |
Fecha: 17/06/2007 |
|
| Todos sabemos que MySQL es uno de los mejores sistemas de bases de datos, pero ¿cómo podemos construir la base de datos más rápida?. Hay que tener en cuenta una serie de factores importates. | |
Fecha: 13/04/2007 |
|
| Cuando debemos buscar entre una gran cantidad de datos, la búsqueda con el comando Like se hace tediosa, debemos comenzar a utilizar las búsquedas FullText. | |
Fecha: 08/06/2007 |
|
| Parece ser que Ask.com ha dejado atrás el típico listado de 10 enlaces ya visto por todos en los buscadores más famosos, ha llegado la hora de renovarse. | |
Fecha: 21/06/2007 |
|
| Si tiene previsto irse de vacaciones y durante su ausencia no podrá consultar su correo puede dejar un aviso de ausencia por vacaciones que se enviará de forma automática a todos los contactos que le hayan enviado correos durante su ausencia. | |
Fecha: 21/06/2007 |
|
| Algunas veces necesitamos de realizar un filtro en el correo que recibimos o quizas tenemos mas de cuenta de correo, pero queremos que todos nuestros correos se reciban en una única cuenta de Correo, o de una única cuente se reenvie a multiples cuentas. | |
Fecha: 21/06/2007 |
|
| Si desea tener una dirección de email asociada con un sitio, como por ejemplo tunombre@dominio.com, debe crear un buzón de correo desde el panel Plesk. También podrá eliminar estas cuentas con 2 clicks de ratón | |
| Comentarios de los Usuarios (0) |
Este artículo ya ha superado la fecha máxima para escribir comentarios, 1 año.