2011-03-04 54 views
4

我想計算變量並將其顯示在代碼中的某處。我有一個循環:循環中的變量計數

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

一切工作正常,但我想看看有多少變量準確顯示。我真的想這樣做,因爲我缺乏數據庫變量。其實有可能從數據庫中獲得這些變量的數量,我只是不知道要使用哪些變量。這就是爲什麼我要手動計算它。

回答

1

如果我正確理解你,你可以在你的循環中使用計數器。

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

希望幫助!

+0

謝謝!它比看起來更容易:) – abrabr 2011-03-04 08:48:20

+0

可以解釋我如果循環處於底部,我將如何在頁面頂部顯示'#counter#'? – abrabr 2011-03-04 08:53:13

+1

我補充說,在答案 - 使用'cfsavecontent'。 – 2011-03-04 09:44:12

4

的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

這裏的另一對夫婦的答案,只是爲了好玩:),雖然具有反可能是您已經招致使用循環的性能打擊的最佳方式。

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

點是有一個多種方式解決這一類問題,所以有樂趣:)