Un motore di ricerca interno con ASP | |
![]() |
|
| |
|
ASP Center
Articoli
Referenze
Script
FAQ
Downloads
Siti utili
ASP
E-Commerce con ASP
Menu Javascript
Ricette
Cocktail
Registrazione domini
Area Aziende
|
Un motore di ricerca interno con ASP
Introduzione
Un'importante utility di navigazione per un sito Web è rappresentata dalla possibilità offerta agli utenti di effettuare ricerche di contenuti interni al sito stesso attraverso un motore di ricerca. L'esempio di questo articolo utilizza un database come contenitore di dati. Ci connetteremo al database e, a seconda della chiave (o delle chiavi) di ricerca impostata, otterremo dei risultati oppure dei messaggi di insuccesso. Il database Utilizzeremo un database MS Access che chiameremo database.mdb in cui creeremo una tabella chiamata documenti, corredata dai seguenti campi:
Il form di ricerca Segue il codice HTML da implementare nelle pagine del sito per effettuare la ricerca attraverso l'inserimento delle stringhe di ricerca da parte degli utenti: <form method="get" action="cerca.asp"> <input type="text" name="query"> <input type="submit" value="Cerca"> </form>Utilizzoamo il metodo get e puntiamo al file cerca.asp di cui vedremo il codice nel prossimo paragrafo. Algoritmo di ricerca ed esposizione dei risultati Veniamo dunque al cuore dell'applicazione, ovvero la pagina di ricerca, di cui segue il codice completo:
<%@LANGUAGE = VBScript%>
<html>
<body>
<%
Dim testo, query
testo = Replace(Request.QueryString("query"), "'", "''")
query = Split(Server.HTMLEncode(testo), " ")
If Len(Trim(testo)) = 0 Then
Response.Write "Inserire un testo per la ricerca"
Else
Dim sc, cn, rs, sql
sc = "driver={Microsoft Access Driver (*.mdb)};dbq="
sc = sc & Server.MapPath("database.mdb")
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open sc
sql = "SELECT * FROM documenti WHERE"
For i = 0 To Ubound(query)
If i > 0 Then
sql = sql & " AND"
End If
sql = sql & " descrizione LIKE '%" & query(i) & "%'"
Next
Set rs = cn.Execute(sql)
If rs.EOF Then
Response.Write "Nessun risultato per la ricerca effettuata"
Else
With Response
While rs.EOF = False
.Write "<a href='" & rs("url") & "'>" & rs("titolo") & "</a>"
.Write "<br>" & rs("descrizione") & "<br><br>"
rs.MoveNext()
Wend
End With
End If
Set rs = Nothing
cn.Close()
Set cn = Nothing
End If
%>
</body>
</html>
Focalizziamo adesso l'attenzione sui punti salienti.
testo = Replace(Request.QueryString("query"), "'", "''")
Nella variabile "testo" recupero la querystring "query", ovvero il nome del campo del modulo di ricerca, effettuando un controllo per l'apice.
query = Split(Server.HTMLEncode(testo), " ")Nella variabile "query" controllo il codice HTML che potrebbe essere usato come chiave di ricerca e divido la stringa stessa in un array, in funzione dello spazio vuoto. sql = "SELECT * FROM documenti WHERE" For i = 0 To Ubound(query) If i > 0 Then sql = sql & " AND" End If sql = sql & " descrizione LIKE '%" & query(i) & "%'" NextLa fase più importante del codice ASP è rappresentato dalla stringa SQL e dalla sua costruzione. Creiamo una stringa SQL base a cui aggiungiamo una seconda fase soggetta ad un ciclo, atto a recuperare tutti gli item dell'array di stringa; filtriamo il ciclo con una condizione il cui scopo è quello di aggiungere un "AND" per impostare N condizioni nella query. Una volta costruita dinamicamente la stringa SQL la eseguiamo e mostriamo i risultati della ricerca. |
Newsletter
Stringhe di Conn.
|
||
| © 2008 ASP Center di Luca Ruggiero - P. IVA 05564851219 - Disclaimer | Privacy | Pubblicità | Supportaci | Staff | Contatti | ||||
| Appunti PHP | Giornale Webmaster | Mr.Webmaster | Download | DevSpy.com | ASPCode.it | ClaudioGarau.it | Webmaster Facile | Come Faccio | AlVerde.net | CodiceFacile.it | I Programmatori | By Luciani | VoiceXML Italian User Group | Giochi | Extro Web Site | Morpheus Web | AG Web Solutions | Net-Free | PC Sicuro | PC Self | Tutorial Web | Dablones | ||||