2011-06-03 147 views
0

我在編輯已經存在的代碼,這就是爲什麼這個問題是按原樣生成的。我試圖使用已經存在的查詢,並且不通過url添加更多的表單變量。過濾cfquery結果

所以我的問題:我有一個正在運行的查詢,並且這個查詢被用來填充頁面上的兩個下拉列表。一個列表是操作狀態,另一個是實際操作位置。在頁面開始時,我希望下拉菜單隻能查詢不同的結果,目前顯示的是120+'AL'80+'MN'等。另外,我希望第二次下拉以獲得僅含有特定狀態作爲他們的狀態。

我知道我可以通過添加更多的查詢和表單變量來做到這一點,但我想知道是否有一種方法來過濾cfquery中的結果。

+2

你調查了ColdFusion查詢查詢嗎? http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec0e4fd-7ff0.html – orangepips 2011-06-03 17:52:26

+0

我還沒有聽說過他們,我現在就去調查一下。 – SomeoneRandom 2011-06-03 18:03:52

回答

1

這是我會做的。只顯示狀態首先下拉。

這對於一些示例代碼會更容易,但這裏有一個示例。還沒有嘗試過,但應該是一個好的開始。決不記得如何設置選擇回沒有選擇......

第一個下拉

<cfoutput group= "state"> 
<option value= "#state#">#state#</option> 
</cfoutput> 

第二個下拉(S)

<cfoutput group= "state" style= "display: none;"> 
<select id= "#site#" class= "site"> 
<option>Select a Site</option> 
<cfoutput> 
<option value= "#site#">#site#</option> 
</cfoutput> 
</select> 
</cfoutput> 

添加一些JavaScript ...

$("#state").change(function() { 

$(".site").each(function() { 
$(this).selected('').hide(); 

}); 

$("select[id=" + $(this).val() + "]").show(); 


}); 
+0

因爲我還是個新手,所以我不能100%確定那個javascript是做什麼的。然而,在你的說明中,首先只顯示狀態下拉,這就是我正在做的事情。目前我使用的是僅用於轉換到第二個下拉菜單的表單變量。我想知道如果在下拉列表中選擇一個項目,在Coldfusion中檢查什麼是一種簡單的方法。這種方式,因爲狀態下拉已經關閉了表單變量,我可以檢查該列表以查看所選值是否爲空,然後以這種方式顯示。 – SomeoneRandom 2011-06-03 18:20:34

0

對第一個下拉菜單的另一個答案+1 - 只對輸出進行分組(確保查詢已正確排序)。

對於第二個下拉菜單 - 使用cfselect並查看綁定屬性 - 您可以將它「綁定」到第一個下拉菜單。

0

這相當依賴於您的特定數據庫設計......(MySQL示例在這裏......)但是,完全假設您有一個字段可以充當PK來定義站點位置,例如ZipCode(它我在這裏使用...)你可以簡單地轉儲你的cfquery到一個數組,然後通過循環來獲得你的結果...

<cffunction name="getDistinct" access="public" returntype="array" hint="Displays a Single Entry based on the ZipCode for this demo ..."> 

     <cfargument name="ZipCode" required="true" type="string" /> 

      <cfset var q = ""> 
      <cfset var result = arrayNew(2)> 
      <cfset i=0> 

      <cfquery name="q" datasource="#variables.dsn#" username="#variables.username#" password="#variables.password#"> 
       SELECT DISTINCT Site, SiteName, State, ZipCode 
       FROM `THETABLE` 
       WHERE ZipCode = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.ZipCode#" maxlength="10"> 
       ORDER BY Site ASC 
      </cfquery> 

       <cfloop index="i" from="1" to="#q.RecordCount#"> 
       <cfset result[i][1] = q.ZipCode[i]> 
       <cfset result[i][2] = q.Site[i]> 
      </cfloop> 

      <cfreturn > 
    </cffunction>