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.
Adobe Edge, la prima animazione HTML5Come creare una animazione HTML5 con Adobe Edge, esempio completo |
Adobe Edge, l'interfacciaEsaminiamo pannelli e menu del tool gratuito di Adobe per la... |
Trasformazioni XSLT in Dreamweaver 8Primo sguardo agli strumenti XML: trasformare un feed RSS |
Layout senza tabelle con Dreamweaver 8Esaminiamo gli strumenti CSS avanzati del software di Adobe/Macromedia |
Il nuovo Dreamweaver 8Panoramica delle principali novità dell'ultima release del popolare... |
Guida WebMatrixEntrare nel mondo dello sviluppo di applicazioni Web con Webmatrix,... |
Guida Notepad++Un editor testuale che funziona perfettamente anche come editor HTML... |
Guida AptanaCreare siti Web o applicazioni con Aptana, l'editor open source,... |
Ogni mattina, dal lunedì al venerdì, le novità pubblicate su tutti i siti tecnici del network HTML.it: articoli, guide, notizie dal Web, blog e molto altro.
Iscriviti alla newsletter
|
|
Corso Webmaster base18 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |
|
|
Corso Webmaster base11 Giugno 2012 a Roma |