Come stampare tutto il risultato senza utilizzare Results.columnname in ColdFusion

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

  •  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,

È stato utile?

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!

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

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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top