كيفية طباعة كل نتيجة من دون استخدام النتائج.columnname في كولد فيوجن
-
10-07-2019 - |
سؤال
كيفية طباعة كل نتيجة من دون استخدام النتائج.columnname في كولد فيوجن
على سبيل المثال:-
لدي <cfquery name="getProductId">
select productId
from product
</cfquery>
في الجدول المنتج لدي 2 الأعمدة مع اسم_المنتج و Product_id.
كيف يمكنني طباعتها دون استخدام getProductId.اسم_المنتج 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.ColumnList الخاصية ؟
مثال صغير من العمر كود تحويل الاستعلام إلى مجموعة (قليلا جردت التفاصيل تغيرت أسماء فار ، ولكن يظهر الفكرة):
<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>
تحرير:تعزيز سبيل المثال للتخلص من الصف متغير بشكل صحيح لاحظت في التعليقات.
لتوسيع على تعليقي إلى استجابة كريس، وهنا صيغة أبسط مع مفقودة علامات 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>