Creiamo ora un semplice motore di ricerca utilizzando i comandi SELECT e LIKE dell'SQL. Il principio è quello di filtrare i dati di una SELECT in base a una parola chiave proveniente da un form.
1 .Salva in un file ricerca_semplice.cfm questo form in HTML:
<!--- ricerca_semplice.cfm: piccolo motore di ricerca nel sito --->
<p class="titolo">Ricerca semplice</p>
<p>
<form method="post">
<table border="0" cellspacing="1" cellpadding="3">
<tr>
<td><p>Parola chiave:</p></td>
<td><input type="text" name="parolaChiave"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Cerca"></td>
</tr>
</table>
</form>
</p>
Quando si clicca sul pulsante "Cerca", il form - privo dell'attributo "action" - rimanda alla stessa pagina, creando una variabile "form.parolaChiave".
2. Se è definito form.parolaChiave, scrivi il SELECT che filtri, tramite l'istruzione LIKE, i campi ALBUM_TITOLO e ALBUM_DESCR della tabella ALBUM nel nostro database:
<!--- ricerca_semplice.cfm: piccolo motore di ricerca nel sito --->
<!--- Se è stato inviato il form, interroga il database --->
<cfif isDefined('form.parolaChiave')>
<cfquery name="getrisultatiRicerca" datasource="#application.DSN#">
SELECT ID_ALBUM, ALBUM_TITOLO
FROM ALBUM
WHERE ALBUM_TITOLO LIKE '%#form.parolaChiave#%' OR ALBUM_DESCR LIKE '%#form.parolaChiave#%'
</cfquery>
</cfif>
<p class="titolo">Ricerca semplice</p>
<p>
<form method="post">
<table border="0" cellspacing="1" cellpadding="3">
<tr>
<td><p>Parola chiave:</p></td>
<td><input type="text" name="parolaChiave"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Cerca"></td>
</tr>
</table>
</form>
</p>
Con l'istruzione LIKE siamo in grado di cercare all'intero dei campi di una tabella. La sintassi utilizza il simbolo di percentuale per creare un'interrogazione del tipo "scegli i record dalla tabella album il cui campo 'ALBUM_TITOLO' contiene il valore di form.parolaChiave o il cui campo 'ALBUM_DESCR' contiene il valore di form.parolaChiave". Cioè quei record che contengono la parola chiave nel titolo o nella descrizione dell'album.
Quando la query restituisce uno o più record, il valore di getrisultatiRicerca.RecordCount è maggiore di zero. In questo caso, visualizziamo i risultati della ricerca e i link alle schede di dettaglio per ciascun album; in caso contrario, mostriamo un messaggio per avvisare che la ricerca non ha soddisfatto alcun record.
3. Utilizza <cfif> e <cfelse> per controllare se la query ha restituito dei risultati e mostrare il numero dei risultati della ricerca (sempre utilizzando la variabile RecordCount):
<!--- ricerca_semplice.cfm: piccolo motore di ricerca nel sito --->
<!--- Se è stato inviato il form, interroga il database e visualizza i risultati della ricerca --->
<cfif isDefined('form.parolaChiave')>
<cfquery name="getrisultatiRicerca" datasource="#application.DSN#">
SELECT ID_ALBUM, ALBUM_TITOLO
FROM ALBUM
WHERE ALBUM_TITOLO LIKE '%#form.parolaChiave#%' OR ALBUM_DESCR LIKE '%#form.parolaChiave#%'
</cfquery>
<p class="titolo">Risultati della ricerca</p>
<cfif getrisultatiRicerca.RecordCount GT 0>
<p>Ho trovato <cfoutput>#getrisultatiRicerca.RecordCount#</cfoutput> album.</p>
<cfelse>
<p>Non ho trovato nessun album cercando la parola chiave <cfoutput>#form.parolaChiave#</cfoutput></form>.</p>
</cfif>
</cfif>
<p class="titolo">Ricerca semplice</p>
<p>
<form method="post">
<table border="0" cellspacing="1" cellpadding="3">
<tr>
<td><p>Parola chiave:</p></td>
<td><input type="text" name="parolaChiave"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Cerca"></td>
</tr>
</table>
</form>
</p>
4. Utilizza <cfoutput> con l'attributo "query" per visualizzare i risultati della ricerca. Con la variabile "Currentrow" possiamo risalire al numero progressivo di ciascun record.
<!--- ricerca_semplice.cfm: piccolo motore di ricerca nel sito --->
<!--- Se è stato inviato il form, interroga il database e visualizza i risultati della ricerca --->
<cfif isDefined('form.parolaChiave')>
<cfquery name="getrisultatiRicerca" datasource="#application.DSN#">
SELECT ID_ALBUM, ALBUM_TITOLO
FROM ALBUM
WHERE ALBUM_TITOLO LIKE '%#form.parolaChiave#%' OR ALBUM_DESCR LIKE '%#form.parolaChiave#%'
</cfquery>
<p class="titolo">Risultati della ricerca</p>
<cfif getrisultatiRicerca.RecordCount GT 0>
<p>Ho trovato <cfoutput>#getrisultatiRicerca.RecordCount#</cfoutput> album.</p>
<!--- Visualizza i risultati della ricerca --->
<p>
<cfoutput query="getrisultatiRicerca">
#Currentrow#) <a href="dettaglio.cfm?id=#ID_ALBUM#">#ALBUM_TITOLO#</a><br>
</cfoutput>
</p>
<cfelse>
<p>Non ho trovato nessun album cercando la parola chiave <cfoutput>#form.parolaChiave#</cfoutput></form>.</p>
</cfif>
</cfif>
<p class="titolo">Ricerca semplice</p>
<p>
<form method="post">
<table border="0" cellspacing="1" cellpadding="3">
<tr>
<td><p>Parola chiave:</p></td>
<td><input type="text" name="parolaChiave"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Cerca"></td>
</tr>
</table>
</form>
</p>
5. Salva il file e aggiungi al piede della pagina, nel file footer.cfm, un link alla ricerca semplice:
<!--- footer.cfm: contiene le dichiarazioni finali della pagina HTML e il piede delle pagine --->
<hr>
<div class="corpoPagina">
<cfset Oggi = Now()>
<span class="piede">
<cfoutput>
<a href="index.cfm">Home page</a> | <a href="ricerca_semplice.cfm">Ricerca semplice</a> | <a href="contattami.cfm">Contattami</a> | Oggi è <strong>#LSDateFormat(Oggi, 'dddd, d mmmm yyyy')#</strong>
</cfoutput>
</span>
</div>
</body>
</html>
Verifica ora il funzionamento del motore di ricerca, inserendo parole chiave che corrispondono ad un album nel database, oppure a lasciare il modulo di ricerca vuoto. Osserva anche che inserendo un nuovo album la ricerca si aggiorna automaticamente, poiché esegue un'interrogazione diretta al database.