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:

<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.

<!--- 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 contiene o contiene

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.

<!--- 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.

<!--- 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. footer.cfm

<!--- 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