2012-02-01 54 views
0

我已經寫了這段CF代碼以獲取並顯示來自數據庫的數據。 (實際上填充文本字段。)問題:我沒有從查詢中獲取值,但我正確地獲取記錄數。如何在ColdFusion查詢中顯示每個元素

我該如何通過cfloop訪問查詢返回的值?以下是我的工作。

<cfquery name="data_query" datasource="#dsn#"> 
    SELECT 
    id, 
    name 
    FROM learning 
</cfquery> 


<cfloop query=data_query"> 
    <li> 
    <div class="list_div clearfix"> 
     <input type="text" value="#URLDecode(name)#"> 
    </div> 
    </li> 
</cfloop> 
</cfquery> 
+0

除了你有任何其他問題,你在你的cfloop中缺少一個雙引號(應該是'),並且在代碼末尾有一個額外的''片段。 – ale 2012-02-01 13:48:06

+0

另外,除了你希望得到的東西外,知道你會得到什麼會是有幫助的。 – ale 2012-02-01 13:49:22

回答

4

你有兩個選擇:

  1. 總結與<cfoutput />標籤瓦爾輸出線:

    <cfoutput>#id#: <input type="text" value="#name#"></cfoutput>

  2. 使用<cfoutput query="data_query">循環,而不是<cfloop ...>

爲了更清晰的代碼的緣故,我寧願第二個選項,以便您的代碼如下:

<cfquery name="data_query" datasource="#dsn#"> 
    SELECT 
     id, 
     name 
    FROM learning 
</cfquery> 

<cfoutput query="data_query"> 
    <li> 
     <div class="list_div clearfix"> 
      #id#: <input type="text" value="#name#"> 
     </div> 
    </li> 
</cfoutput> 
1

在整個你的邏輯是很好..只有幾個錯別字,需要細微的變化..

試試這個。

<cfquery name="data_query" datasource="#dsn#"> 
    SELECT 
     id, 
     name 
    FROM learning 
</cfquery> 

<cfloop query="data_query"> 
    <li> 
     <div class="list_div clearfix"> 
      #id#: <input type="text" value="#name#"> 
     </div> 
    </li> 
</cfloop> 
3

你也應該正常「範圍」輸出時,您的查詢列。這將使您的代碼在將來更容易維護,例如你總是會知道#data_query.name#屬於查詢,並不是某個其他代碼段設置的某個字符串。它會加快頁面性能 - 如果你沒有爲變量作用域(這適用於所有類型的變量,而不僅僅是查詢),那麼CF將循環遍歷不同的作用域,直到找到具有該值的東西。所以通過範圍界定,你可以防止CF循環。

<cfquery name="data_query" datasource="#variables.dsn#"> 
    SELECT 
     id, 
     name 
    FROM learning 
</cfquery> 

<cfoutput query="data_query"> 
    <li> 
     <div class="list_div clearfix"> 
      #data_query.id#: <input type="text" value="#data_query.name#"> 
     </div> 
    </li> 
</cfoutput> 
1

如果你不知道它沒有:

<cfdump var="#data_query#"> 

OR

<cfdump var="#data_query#" abort> 

會給你一個漂亮的顯示器回來從你的查詢,或以任何變量或結構體。

+1

這是一個比答案更多的評論。 – ale 2012-02-01 15:38:53