Как напечатать весь результат без использования Results.columnname в ColdFusion

StackOverflow https://stackoverflow.com/questions/1642831

  •  10-07-2019
  •  | 
  •  

Вопрос

Как напечатать весь результат без использования Results.columnname в ColdFusion

для бывших:-

У меня есть <cfquery name="getProductId"> select productId from product </cfquery>

В таблице Product у меня есть 2 столбца с product_name и Product_id.

Как я могу распечатать их, не используя getProductId.product_name getProductId.Product_id

Спасибо,

Это было полезно?

Решение

Чего вы пытаетесь достичь?Если вы ищете способ вычислительного вывода результатов запроса на основе запроса, имена столбцов которого вам неизвестны, например...

<cfquery name="queryName" ...>
    select * from product
</cfquery>

... затем вы можете использовать queryName.ColumnList переменная, которая возвращает разделенный запятыми список всех имен столбцов.Впоследствии вы могли бы выполнить итерацию по этому списку и выводить по мере необходимости.

Например, чтобы получить простой вывод HTML-таблицы:

<table border=1>
    <cfloop from="0" to="#queryName.RecordCount#" index="row">
        <cfif row eq 0>
            <tr>
                <cfloop list="#queryName.ColumnList#" index="column" delimiters=",">
                    <th><cfoutput>#column#</cfoutput></th>  
                </cfloop>
            </tr>
        <cfelse>
            <tr>
                <cfloop list="#queryName.ColumnList#" index="column" delimiters=",">
                    <td><cfoutput>#queryName[column][row]#</cfoutput></td>
                </cfloop>
            </tr>
    </cfif>
    </cfloop>
</table>

Прошу прощения, если это не то, что вы имели в виду!

Другие советы

Не могли бы вы, пожалуйста, пояснить, что означает "без использования имени столбца"?

Может быть, вы хотите использовать getProductId.Список столбцов атрибут?

Небольшой пример из моего старого кода, который преобразует запрос в массив (немного удалены детали и изменены имена переменных, но показывает идею):

    <cfset arrRecordSet = ArrayNew(1)>

    <cfloop query="qGetSomething">
        <cfset record = StructNew()>
        <cfloop list="#qGetSomething.ColumnList#" index="field">
            <cfset record[field] = qGetSomething[field][qGetSomething.CurrentRow]>
        </cfloop>
        <cfset ArrayAppend(arrRecordSet,record)>
    </cfloop>

Редактировать:улучшенный пример избавления от переменной строки, как правильно замечено в комментариях.

Запрос к HTML-таблице?для этого есть бирка!

<CFTable> ФТВ!

http://www.cfquickdocs.com/cf8/#cftable :)

Чтобы расширить мой комментарий к ответу Криса, вот более простая версия с добавленными отсутствующими тегами thead / tbody:

<cfoutput>
    <table>
        <thead>
            <tr>
                <cfloop index="ColName" list="#MyQuery.ColumnList#">
                    <th>#ColName#</th>
                </cfloop>
            </tr>
        </thead>
        <tbody>
            <cfloop query="MyQuery">
                <tr>
                    <cfloop index="ColName" list="#MyQuery.ColumnList#">
                        <td>#MyQuery[ColName][MyQuery.CurrentRow]#</td>
                    </cfloop>
                </tr>
            </floop>
        </tbody>
    </table>
</cfoutput>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top