Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 27 di 39
  • livello principiante
Indice lezioni

Un semplice motore di ricerca

Come creare un piccolo e semplice motore di ricerca in ColdFusion MX
Come creare un piccolo e semplice motore di ricerca in ColdFusion MX
Link copiato negli appunti

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.

Ti consigliamo anche