Как отобразить каждый элемент в запросе ColdFusion - PullRequest
0 голосов
/ 01 февраля 2012

Я написал этот фрагмент кода CF для получения и отображения данных из базы данных.(Фактически для заполнения текстовых полей.) Проблема: я не получаю значения из запроса, но я правильно получаю количество записей.

Как мне получить доступ к значениям, возвращаемым запросом через 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>

Ответы [ 4 ]

4 голосов
/ 01 февраля 2012

У вас есть два варианта:

  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>
3 голосов
/ 01 февраля 2012

Также вы должны правильно «охватывать» столбцы запроса при выводе.Это облегчит поддержку вашего кода в будущем, например, вы всегда будете знать, что # 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 голос
/ 01 февраля 2012

И если вы не знали об этом:

<cfdump var="#data_query#">

ИЛИ

<cfdump var="#data_query#" abort>

Прекрасно отобразит возвращенный из вашего запроса или в любой переменной илисостав.

1 голос
/ 01 февраля 2012

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

Дайте это попробовать.

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