我有2张桌子。一个是类别,第二个是问题。
category table:
category_id
category_name
questions table:
question_name
question_id
category_id
如何循环显示所有类别名称并显示在每个类别名称下分组的问题?使用ColdFusion,所以我假设我应该使用<CFLOOP>
结果看起来应该是这样的。
类别1
Category2
答案 0 :(得分:10)
如果使用cfoutput
循环,则可以按特定列进行分组,然后为该列中的项目设置内部循环。
像这样:
<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>
令人讨厌的是,此分组功能尚未添加到主cfloop
,您需要通过cfoutput
使用它。 :(德尔>
更新:在ColdFusion 10和Railo 4中,您现在可以使用cfloop
而非cfoutput
执行此操作。但请注意,该属性为组而不是 groupby :
<cfloop query="Questions" group="category_name">
**#category_name#**
<cfloop>
#question_name#
</cfloop>
</cfloop>
重要提示:如果这是HTML输出,请使用HtmlEditFormat(question_name)
以避免潜在的HTML注入。同样,JsStringFormat(question_name)
以避免JS注入等。
同样,两个CF10 / R4也改进了这种情况,使用了更加明确命名的encodeForX
方法(即encodeForHtml
,encodeForJavaScript
等)