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.

Se vuoi aggiornamenti su Design inserisci la tua email nel box qui sotto:

Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.

Ti consigliamo anche