Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Il comando <CFLOOP> in Cold Fusion

Il comando utilizzato in Cold Fusion per gestire i Loop. Esempi e descrizioni dettagliate.
Il comando utilizzato in Cold Fusion per gestire i Loop. Esempi e descrizioni dettagliate.
Link copiato negli appunti

Il loop è una tecnica fondamentale di qualunque linguaggio di programmazione. Le cosiddette loop structures permettono di ripetere una serie di istruzioni all'interno di un programma fino a quando si vengono a verificare una o piu' condizioni stabilite dal programmatore.

Con ColdFusion è possibile usare le strutture loop in diversi modi:

  • Loop indicizzati
  • Loop condizionali
  • Loop basati su queries
  • Loop basati su liste di valori

Loop indicizzati

Un loop indicizzato ripete le istruzioni contenute al suo interno per un certo numero di volte stabilito dai parametri del loop stesso. I loop indicizzati di ColdFusion sono paragonabili ai For loops di altri linguaggi di programmazione.

Sintassi:

<CFLOOP
 INDEX = "nome_della_variabile_indice"
 FROM = "valore_iniziale"
 TO = "valore_finale"
 STEP = "incremento"
>

"codice HTML o CFML da eseguire più volte"

</CFLOOP>

INDEX (argomento obbligatorio) è la variabile utilizzata come contatore all'interno del loop. Ad essa verra' assegnato il valore di FROM e verra' incrementata di 1 (oppure del valore assegnato a STEP) fino a raggiungere il valore di TO.

FROM (argomento obbligatorio) è il valore iniziale che il comando assegna alla variabile contatore.

TO (argomento obbligatorio) è il valore che la variabile contatore deve raggiungere affinchè il loop si interrompa.

STEP (argomento facoltativo) è il valore di incremento che il comando assegna alla variabile contatore al termine di ogni singolo loop. Se STEP non viene specificato, il comando incrementera' automaticamente il valore della variabile contatore di 1 al termine di ogni singola esecuzione della serie di istruzioni.

Esempio:

I numeri interi compresi tra uno e dieci sono:

<CFLOOP  
 INDEX = "i"
 FROM = "1"
 TO = "10"

<CFOUTPUT> #i# </CFOUTPUT>

</CFLOOP>

L'output fornito da questo codice sara':

"I numeri interi compresi tra uno e dieci sono: 1 2 3 4 5 6 7 8 9 10"

Esempio:

I numeri interi compresi tra dieci ed uno sono:
<CFLOOP
 INDEX = "i"
 FROM = "10"
 TO = "1"
 STEP = "-1"
>
<CFOUTPUT> #i# </CFOUTPUT>
</CFLOOP>

L'output fornito da questo codice sara' esattamente l'opposto del precedente:

"I numeri interi compresi tra dieci ed uno sono: 10 9 8 7 6 5 4 3 2 1"

Loop condizionali

I loop condizionali ripetono una serie di istruzioni fino a che una certa condizione risulta vera. Per utilizzare questo tipo di struttura è necessario che il codice compreso nel loop si occupi di modificare la condizione sulla quale è basato il loop stesso, in modo che dopo una serie di iterazioni essa diventi falsa.

I loop condizionali di ColdFusion sono paragonabili ai While loop di altri linguaggi di programmazione.

Sintassi:

<CFLOOP CONDITION = "espressione_condizionale">
  "codice HTML o CFML da eseguire più volte"  
</CFLOOP>

Condition è la condizione sulla quale si basa il loop. Il loop continuera' ad eseguire le istruzioni comprese al suo interno fino a quando la condizione non diventera' falsa.

Esempio:

<CFSET i = 1>
I numeri interi compresi tra uno e dieci sono:
<CFLOOP CONDITION = "i LESS THAN OR EQUAL TO 10">
<CFOUTPUT> #i# </CFOUTPUT>
<CFSET i = i + 1>
</CFLOOP>

L'output fornito da questo codice sara':

"I numeri interi compresi tra uno e dieci sono: 1 2 3 4 5 6 7 8 9 10"

Loop basati su queries

Un loop basato su query ripete le istruzioni comprese al suo interno per il numero di record presente all'interno di una data query. Durante ogni iterazione il loop rende disponibile i valori della query associati ai record che si stanno processando.

Sintassi:

<CFLOOP
QUERY = "nome_della_query" 
STARTROW = "numero_della_riga_di_partenza" 
ENDROW = "numero_della_riga_finale" 
>
  "codice HTML o CFML da eseguire più volte"
</CFLOOP>

Query (argomento obbligatorio) è il nome della query che controllera' il loop.

Startrow (argomento facoltativo) è il numero della prima riga che dovra' essere processata dal loop.

Endrow (argomento facoltativo) è il numero dell'ultima riga che dovra' essere processata dal loop.

Esempio:

<CFQUERY
name="prova"
DATASOURCE="databaseprove"
>
 SELECT * FROM clienti
 ORDER BY nome
</CFQUERY>

<CFLOOP
 QUERY = "prova"
>

#nome# #cognome#
</CFLOOP>

Loop basati su liste di valori

Un loop basato su una lista di valori permette di effettuare operazioni su più elementi contenuti in una variabile, oppure sul risultato di una funzione.

Sintassi:

<CFLOOP   
 INDEX = "variabile_interna_al_loop"
 LIST = "lista_di_valori"  
 DELIMITERS = "carattere_separatore" 
>   
  "codice HTML o CFML da eseguire più volte"
</CFLOOP>

Index (argomento obbligatorio) è il nome della variabile interna al loop che ricevera' ogni singolo valore della lista, uno per ogni iterazione.

List (argomento obbligatorio) è l'elenco di valori da processare oppure il nome della variabile che contiene tali valori. Se la lista di valori viene specificata nel loop essa dovra' essere compresa entro virgolette, altrimenti è necessario specificare il nome della variabile dopo l'uguale senza virgolette.

Delimiters (argomento facoltativo) è il carattere che separa gli argomenti della lista. Se non specificato, la funzione di default considerera' i valori della lista separati da una virgola.

Esempio:

<CFLOOP
 INDEX = "nome"
 LIST = "Aldo,Giovanni,Giacomo"
>
<CFOUTPUT> #nome# </CFOUTPUT>
</CFLOOP>

L'output fornito da questo codice sara':

"Aldo Giovanni Giacomo"

Suggerimenti

I loop sono essenziali nella maggior parte delle applicazioni di qualunque linguaggio di programmazione.
In ColdFusion il loop più tipicamente utilizzato è quello associato ad una query, come quando per esempio si vuole visualizzare il contenuto di una tabella di un database.

Un potenziale svantaggio di queste strutture puo' essere il consumo di risorse del server. È consigliabile strutturare con attenzione i propri loop ed assicurarsi che non vi sia il modo di ritrovarsi nella condizione di poter generare un loop infinito.

Qualche piccolo accorgimento puo' essere ininfluente per la singola applicazione, ma a lungo andare puo' diventare un fattore cruciale per un server dove di applicazioni ne possono girare a decine nello stesso momento.

Ti consigliamo anche