使用嵌套 cfloop 查询

发布于 2024-09-03 18:40:26 字数 410 浏览 8 评论 0原文

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

 category table: 

 category_id
 category_name

 questions table:

 question_name
 question_id
 category_id

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

结果应该如下所示。

类别1

  • 问题1
  • 问题2

类别2

  • 问题4
  • 问题5

I have 2 tables. One is for categories, the second is for Questions.

 category table: 

 category_id
 category_name

 questions table:

 question_name
 question_id
 category_id

How can I loop though all the category names and show the questions grouped under each category name? Using ColdFusion, so I am assume I should use <CFLOOP>

The results should look something like this.

Category1

  • Question 1
  • Question 2

Category2

  • Question 4
  • Question 5

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小嗲 2024-09-10 18:40:26

如果使用 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 方法(即 encodeForHtml、encodeForJavaScript 等)

If you loop with cfoutput, you can group by a specific column, and then have an inner loop for items in that column.

Like this:

<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>

Annoyingly, this grouping feature hasn't been added to the main cfloop, you need to use it via cfoutput. :(

Update: In ColdFusion 10 and Railo 4, you can now do this with cfloop rather than cfoutput. Note however that the attribute is group not groupby:

<cfloop query="Questions" group="category_name">
    **#category_name#**
    <cfloop>
        #question_name#
    </cfloop>
</cfloop>

Important: If this is HTML output, use HtmlEditFormat(question_name) to avoid potential HTML injection. Similarly, JsStringFormat(question_name) to avoid JS injection, etc.

Again, both CF10/R4 have improved this sitution too, with more consitently named encodeForX methods (i.e. encodeForHtml, encodeForJavaScript, etc)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文