У меня есть 2 таблицы. Каждый для категорий, второе для Вопросов.
category table:
category_id
category_name
questions table:
question_name
question_id
category_id
Как я могу циклично выполниться, хотя все названия категории и показывают вопросы, сгруппированные под каждым названием категории? Используя ColdFusion, таким образом, я, предполагают, что я должен использовать <CFLOOP>
Результаты должны выглядеть примерно так.
Category1
Category2
Если вы выполняете цикл с 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
. Однако обратите внимание, что атрибутом является группа not 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
и т. Д.)