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

Interroghiamo il database

Come interagire con il database estraendone i dati necessari
Come interagire con il database estraendone i dati necessari
Link copiato negli appunti

In CFML non si interrogano direttamente i database, ma i Data Source Name che abbiamo impostato in ColdFusion Administrator. Il tag che svolge questo compito è <cfquery>.

<cfquery> richiede due attributi, "datasource" e "name". Con il primo indichiamo quale Data Source Name deve essere interrogato, con il secondo il nome che deve avere il recordset restituito dalla query.

1. Ad esempio, apri index.cfm e modificalo in questo modo:

<!--- Esegue una query al datasource "discoteca" chiamata "getAlbum" --->

<cfquery datasource="discoteca" name="getAlbum">
     SELECT ALBUM_TITOLO, ALBUM_AUTORE, ALBUM_GENERE
     FROM ALBUM
</cfquery>

<!--- Include l'intestazione del sito --->
<cfinclude template="header.cfm">

<!--- Include il piede delle pagine --->
<cfinclude template="footer.cfm">

Con il tag <cfquery> abbiamo passato a ColdFusion la stringa SQL per eseguire un "SELECT" dalla tabella "ALBUM" del datasource "discoteca".

Così facendo, ancora non abbiamo visualizzato nulla del contenuto del recordset. Il tag <cfoutput>, che abbiamo visto prima per visualizzare il contenuto di una variabile, si utilizza anche per visualizzare il risultato di una query.

2. Inserisci, dopo il primo <cfinclude>, questo codice:

......
<p><cfoutput query="getAlbum">
     #ALBUM_GENERE#:
<b>#ALBUM_TITOLO#</b> (#ALBUM_AUTORE#)<br>
</cfoutput></p>
......

e, dopo aver salvato, apriamo "http://localhost:8500/discoteca/index.cfm" (se viene mostrato un errore, assicurati di aver scritto correttamente il codice e di aver chiuso il database di Access, o di averlo aperto con accesso condiviso).

Con <cfoutput> e l'attributo "query" abbiamo detto a ColdFusion di mostrare il risultato della query "getAlbum". Con la solita notazione, inserendo tra cancelletti il nome dei campi del database, abbiamo "stampato" ogni record restituito dal SELECT contenuto in <cfquery>. Possiamo considerare <cfoutput> come un ciclo eseguito sul recordset.

3. Modifica il <cfoutput> giocando un po' con l'HTML per creare una tabella, inserendo in ciascuna riga il valore del record:

......
<p>
<table>
<!--- L'intestazione della tabella --->
     <tr>
          <td><p><b>Genere</b></p></td>
          <td><p><b>Titolo</b></p></td>
          <td><p><b>Autore</b></p></td>
     </tr>

<cfoutput query="getAlbum">
<!--- Una riga della tabella per ogni record della query GetAlbum --->
     <tr>
          <td><p>#ALBUM_GENERE#</p></td>
          <td><p>#ALBUM_TITOLO#</p></td>
          <td><p>#ALBUM_AUTORE#</p></td>
     </tr>
</cfoutput>

</table>
</p>
......

4. Aggiungi una descrizione prima della tabella:

......
<p>
     Ad oggi ci sono <cfoutput>#getAlbum.RecordCount#</cfoutput> CD nel mio database.
</p>

<p>
<table>
<!--- L'intestazione della tabella --->
     <tr>
          <td><p><b>Genere</b></p></td>
          <td><p><b>Titolo</b></p></td>
          <td><p><b>Autore</b></p></td>
     </tr>

<cfoutput query="getAlbum">
<!--- Una riga della tabella per ogni record della query GetAlbum --->
     <tr>
          <td><p>#ALBUM_GENERE#</p></td>
          <td><p>#ALBUM_TITOLO#</p></td>
          <td><p>#ALBUM_AUTORE#</p></td>
     </tr>
</cfoutput>

</table>
</p>
......

Con la variabile "getAlbum.RecordCount" possiamo risalire al numero dei record che sono stati estratti dalla query getAlbum. Essendo una variabile CFML, abbiamo bisogno di <cfoutput> e dei cancelletti # per mostrarne il contenuto. "RecordCount" è una variabile riservata e come scope ha sempre quello della query di cui vogliamo conoscere il numero di record.

Prova a navigare nella home page ("http://localhost:8500/discoteca/index.cfm") per fare un test.

Ti consigliamo anche