Come stampare tutto il risultato senza utilizzare Results.columnname in ColdFusion
-
10-07-2019 - |
Domanda
Come stampare tutto il risultato senza usare Results.columnname in ColdFusion
ad esempio: -
Ho <cfquery name="getProductId">
select productId
from product
</cfquery>
Nella tabella dei prodotti ho 2 colonne con product_name e Product_id.
Come posso stamparli senza usare getProductId.product_name getProductId.Product_id
Grazie,
Soluzione
Cosa stai cercando di ottenere? Se stai cercando un modo per produrre in modo computazionale i risultati delle query in base a una query di cui non conosci i nomi delle colonne, come ...
<cfquery name="queryName" ...>
select * from product
</cfquery>
... quindi puoi utilizzare la variabile queryName.ColumnList
, che restituisce un elenco separato da virgole di tutti i nomi di colonna. Successivamente è possibile scorrere su questo elenco e generare come richiesto.
Ad esempio, per ottenere un semplice output di tabella 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>
Mi scuso se non è quello che volevi dire!
Altri suggerimenti
Puoi chiarire cosa significa " senza usare il nome della colonna " ;?
Forse vuoi usare l'attributo getProductId.ColumnList ?
Piccolo esempio del mio vecchio codice che converte le query nell'array (dettagli un po 'spogliati e nomi delle varianti modificati, ma mostra l'idea):
<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>
EDIT: esempio migliorato per sbarazzarsi della variabile di riga, come notato correttamente nei commenti.
Query a HTML table? c'è un tag per quello!
<CFTable>
FTW!
Per espandere il mio commento alla risposta di Chris, ecco la versione più semplice con i tag thead / tbody mancanti aggiunti:
<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>