laboratorio caffeina

in few words, just developing

 

un semplice motore di ricerca in asp

capita spesso di dover creare un semplice motore di ricerca.
le soluzioni possono essere molteplici, questa è quella un po' "ruspante" che per un po' ho adottato io e che sicuramente può tornare utile.

poniamo che la form di ricerca sia una cosa semplicissima tipo questa

HTML:
  1. <form method="get" action="/search.asp">
  2.       <label for="s">cerca:</label>
  3.       <input type="text" name="s" id="s" />
  4.       <input type="submit" value="invia" />
  5.    </fieldset>
  6. </form>

vediamo ora la pagina che riceverà  la chiamata

ASP:
  1. strCerca = Request.QueryString("s")

e ricordiamoci di chiudere tutto il codice che segue all'interno dell'if seguente

ASP:
  1. If strCerca<>"" then
  2.    'codice da inserire
  3. Else
  4.    response.write("inserire almeno un termine di ricerca")
  5. End If

quindi andiamo a sostituire gli apici, per evitare che diano problemi nella query sql e splittiamo la stringa, in modo da poter riportare i risultati ricerca per le singole parole

ASP:
  1. strCerca = replace(strCerca,"/'/g","''")
  2. arrCerca = Split(strCerca)

e ora vediamo la costruzione della query Sql con delle like.
sostanzialmente andiamo a fare un ciclo sull'array inserendo per ogni termine cercato la seguente richiesta:
trova qualsiasi risultato che contenga ciascun termine cercato in almeno uno tra i campi fldName1, fldName2 e fldName3 (il numero dei campi può essere aumentato o diminuito a piacere aggiungendo OR alla stringa)

ASP:
  1. sql = "SELECT * FROM dbName.tblName WHERE "
  2.              
  3. For i = LBound(arrCerca) To UBound(arrCerca)
  4.    If arrCerca(i)<>"" Then   
  5.       If i> 0 Then _
  6.          sql = sql & " AND "
  7.  
  8.       sql = sql & "(tblName.fldName1 like '%" & arrCerca(i) &"%' OR tblName.fldName2 like '%" & arrCerca(i) &"%' OR tblName.fldName3 like '%"& arrCerca(i) &"%')"
  9.  
  10.    End If
  11. Next

spero di aver scritto tutto correttamente

 
 

Commenta



 
Chiudi
E-mail It