5

私は2つのテーブルを持っています。1 つはカテゴリ用、もう 1 つは質問用です。

 category table: 

 category_id
 category_name

 questions table:

 question_name
 question_id
 category_id

すべてのカテゴリ名をループして、各カテゴリ名の下にグループ化された質問を表示するにはどうすればよいですか? ColdFusionを使用しているので、使用する必要があると思います<CFLOOP>

結果は次のようになります。

カテゴリー1

  • 質問1
  • 質問2

カテゴリー2

  • 質問 4
  • 質問5
4

1 に答える 1

11

でループすると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>


厄介なことに、このグループ化機能は maincfloopに追加されていないため、 経由で使用する必要がありますcfoutput。:(

更新: ColdFusion 10 および Railo 4 では、これをcfloopではなく で実行できるようになりcfoutputました。ただし、属性はgroupby ではなくgroupであることに注意してください。

<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、 など)を使用しています。

于 2010-06-03T23:58:41.527 に答える