Articoli Referenze Script FAQ Downloads ASP E-Commerce con ASP Menu Javascript Ricette Cocktail Registrazione domini Area Aziende



Un motore di ricerca interno con ASP

Home + Articoli + Motori di Ricerca + Articolo # 145
Autore: Luca Ruggiero



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:
  • id - Contatore
  • titolo - Testo, 50 caratteri
  • descrizione - Testo, 255 caratteri
  • url - Testo, 100 caratteri
Il campo "descrizione" rappresenta la fonte di dati a cui attingere informazioni in fase di ricerca, mentre il campo "url" rappresenta la pagina di destinazione.

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) & "%'"
Next
La 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.

© 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