Editor  »  Guide  »  Guida Coldfusion Mx 

Un semplice motore di ricerca



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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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.

Ultimi articoli Editor

Adobe Edge, la prima animazione HTML5

Come creare una animazione HTML5 con Adobe Edge, esempio completo

Adobe Edge, l'interfaccia

Esaminiamo pannelli e menu del tool gratuito di Adobe per la...

Trasformazioni XSLT in Dreamweaver 8

Primo sguardo agli strumenti XML: trasformare un feed RSS

Layout senza tabelle con Dreamweaver 8

Esaminiamo gli strumenti CSS avanzati del software di Adobe/Macromedia

Il nuovo Dreamweaver 8

Panoramica delle principali novità dell'ultima release del popolare...

Altri articoli

Guide Editor

Guida WebMatrix

Entrare nel mondo dello sviluppo di applicazioni Web con Webmatrix,...

Guida Notepad++

Un editor testuale che funziona perfettamente anche come editor HTML...

Guida Aptana

Creare siti Web o applicazioni con Aptana, l'editor open source,...

Altre guide

Newsletter @Daily HTML.it

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

Altre newsletter

Corsi in aula

Corso Webmaster base

18 Giugno 2012 a Milano
Disponibilità: 6 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti

Corso Webmaster base

11 Giugno 2012 a Roma
Disponibilità: 7 Posti