【问题标题】:Using nested cfloop queries使用嵌套的 cfloop 查询
【发布时间】:2011-02-27 13:46:06
【问题描述】:

我有 2 张桌子。一个用于类别,第二个用于问题。

 category table: 

 category_id
 category_name

 questions table:

 question_name
 question_id
 category_id

如何遍历所有类别名称并显示分组在每个类别名称下的问题?使用 ColdFusion,所以我假设我应该使用 <CFLOOP>

结果应该是这样的。

类别1

  • 问题 1
  • 问题 2

类别2

  • 问题 4
  • 问题 5

【问题讨论】:

    标签: sql sql-server coldfusion cfml cfloop


    【解决方案1】:

    如果您使用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 来执行此操作。但请注意,该属性是 group 而不是 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 方法(即encodeForHtmlencodeForJavaScript 等)

    【讨论】:

    • 我将如何像您的示例那样构建循环?
    • @jeff,你是什么意思? cfoutput 已经为您循环了查询。
    • 顺便说一句,不要忘记在## 之间使用 htmlEditFormat()。 :)
    • 对不起,现在有。被嵌套的 cfoutput 标签弄糊涂了。非常感谢彼得。也感谢亨利。
    • 是的,您的困惑正是使用 cfloop 标签更好的原因。 (如果咨询委员会取得任何进展,我会尝试要求将其添加到核心中。)亨利 - 好点,必须转义输出 - 尽管不能保证这是 HTML。 ;)
    猜你喜欢
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 2021-04-10
    相关资源
    最近更新 更多