Подсчет переменных в цикле - PullRequest
4 голосов
/ 04 марта 2011

Я хочу посчитать переменные и показать это где-нибудь в моем коде. У меня есть петля:

<cfloop query="get_serial">
  <cfif PROCESS_ID eq attributes.action_id> #SERIAL_NO# </cfif>
</cfloop>

и его запрос:

<cfquery name="get_serial" datasource="#dsn3#">
SELECT * 
FROM SERVICE_GUARANTY_NEW 
WHERE STOCK_ID = #attributes.action_row_id# 
ORDER BY SERIAL_NO
</cfquery>

Все работает нормально, но я хочу посчитать, сколько переменных отображается точно. Я действительно хочу сделать это таким образом, потому что мне не хватает переменных базы данных. На самом деле можно получить количество этих переменных из базы данных, я просто не знаю, какие переменные использовать. Вот почему я хочу посчитать это вручную.

Ответы [ 3 ]

4 голосов
/ 04 марта 2011

ColdFusion предоставляет переменную, которая сообщает вам, сколько строк возвращено в вашем запросе, без выполнения цикла для их подсчета:

<cfquery name="get_serial" datasource="#dsn3#">
    SELECT * 
    FROM SERVICE_GUARANTY_NEW 
    WHERE STOCK_ID = #attributes.action_row_id# 
    ORDER BY SERIAL_NO
</cfquery>

<cfoutput>There are #get_serial.recordCount# rows.</cfoutput>

<cfoutput query="get_serial">
    <p>#get_serial.serial_no#</p>
</cfoutput>
1 голос
/ 05 марта 2011

Вот еще пара ответов, просто для удовольствия :), хотя использование счетчика, вероятно, лучший способ, поскольку вы уже испытываете снижение производительности при использовании цикла.

<cfquery name="getCount" dbtype="query">
SELECT PROCESS_ID FROM get_serial WHERE PROCESS_ID = #attributes.action_id#
</cfquery>
<cfset total = getCount.RecordCount />

И используя списки, всегда весело:

<cfset total = ListValueCount(ValueList(get_serial.PROCESS_ID), attributes.action_id) />

Суть в том, что есть множество способов решить такую ​​проблему, так что веселитесь:)

1 голос
/ 04 марта 2011

Если я вас правильно понимаю, вы можете сделать это с помощью счетчика в вашем цикле.

<cfset counter = 0 />

<cfloop query="get_serial">
  <cfif PROCESS_ID eq attributes.action_id> 
    #SERIAL_NO# 
    <cfset counter ++ />
  </cfif>
</cfloop>

<cfoutput>Output #counter# times!</cfoutput>

РЕДАКТИРОВАТЬ: ответить на ваш следующий вопрос:

<cfset counter = 0 />
<cfsavecontent variables="myContent">

  <cfloop query="get_serial">
    <cfif PROCESS_ID eq attributes.action_id> 
      #SERIAL_NO# 
      <cfset counter ++ />
    </cfif>
  </cfloop>

</cfsavecontent>

<cfoutput>

  <p>Output #counter# times!</p>
  <p>#myContent#</p>

</cfoutput>

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...