Si vous bouclez avec cfoutput
, vous pouvez regrouper par une colonne spécifique, puis avoir une boucle interne pour les éléments de cette colonne.
Comme ceci:
<cfquery name="Questions">
SELECT q.question_name , c.category_name
FROM questions q
JOIN category c
ON c.category_id = q.category_id
ORDER BY c.category_name , q.question_name
</cfquery>
<cfoutput query="Questions" groupby="category_name">
**#category_name#**
<cfoutput>
#question_name#
</cfoutput>
</cfoutput>
Fâcheusement, cette fonction de groupement n'a pas été ajouté à la principale cfloop
, vous devez l'utiliser via cfoutput
. :(
Mise à jour: Dans ColdFusion 10 et Railo 4, vous pouvez le faire avec cfloop
plutôt que cfoutput
A noter cependant que l'attribut est groupe pas groupby.
<cfloop query="Questions" group="category_name">
**#category_name#**
<cfloop>
#question_name#
</cfloop>
</cfloop>
Important: S'il s'agit d'une sortie HTML, utilisez HtmlEditFormat(question_name)
pour éviter une injection HTML potentielle. Injection JS, etc.
Encore une fois, les deux CF10/R4 ont également amélioré cette situation, avec des méthodes plus souvent appelées encodeForX
(c.-à-d. encodeForHtml
, encodeForJavaScript
, etc)
Comment pourrais-je structurer la boucle comme votre exemple? – jeff
@jeff, qu'est-ce que tu veux dire? cfoutput boucle déjà la requête pour vous. – Henry
btw, n'oubliez pas d'utiliser htmlEditFormat() entre ##. :) – Henry