我可以使用#getlistat(按字母顺序排列吗?(coldfusion)

时间:2014-10-29 19:38:37

标签: coldfusion

我正在开发一个网站,而后端开发人员则是AWOL。 目前,这行代码基于最近添加的内容来拉取目录中的第一个图像。反正按字母顺序排在第一位吗?

<img width="920" height="300" 
   src="data/images/<cfoutput>#ListGetAt(pic, 1)#</cfoutput>" />

在此先感谢,我对CF的了解非常渺茫。这是CF代码:

<cfquery name="HomePageImage" Datasource="PioneerPublic">
   SELECT ImageFull FROM HomePageImages WHERE Active = 1
</cfquery>
<cfset pic = "">    
<cfloop index="x" from="1" to="#HomePageImage.Recordcount#">
    <cfset pic = #ListAppend(pic, HomePageImage.ImageFull[x])#>
</cfloop>

3 个答案:

答案 0 :(得分:2)

使用ListSort()

<cfoutput>#ListGetAt(ListSort(pic, "textnocase"), 1)#</cfoutput>

答案 1 :(得分:1)

在查询中添加order by子句。然后,您无需担心查询或查询,或listSort()只需在imageFull之前添加订单到您的查询结尾,您无需触及任何其他内容。让DB处理sort..DBs擅长那种事情。

<cfquery name="HomePageImage" Datasource="PioneerPublic">
   SELECT ImageFull FROM HomePageImages WHERE Active = 1 ORDER BY ImageFull
</cfquery>

此外,无需循环查询以创建列表,只需使用

即可
<cfset pic = valueList( homepageImage.imageFull ) />

答案 2 :(得分:0)

您认为 对ColdFusion的了解很少 - 您的后端开发人员的知识也需要一些帮助:)

一旦你有了一个查询,你实际上可以直接在ColdFusion中使用一个名为&#34;查询查询的东西来操纵它。 (我知道好名字。)

例如,此处的第二个查询将按照ASC顺序按AlphaNumeric重新排序第一个查询。

<cfquery name="HomePageImage" Datasource="PioneerPublic">
       SELECT ImageFull 
       FROM   HomePageImages 
       WHERE  Active = 1
</cfquery>

<Cfquery dbtype="query" name="HomePageImage">
    SELECT   ImageFull
    FROM     HomePageImage
    ORDER BY ImageFull ASC
</cfquery>


<cfset pic = "">    
<cfloop index="x" from="1" to="#HomePageImage.Recordcount#">
<cfset pic = ListAppend(pic, HomePageImage.ImageFull[x])>
</cfloop>

主要区别在于&#34; dbtype&#34;设置为查询 - 和&#34; tablename&#34;在查询中是原始查询的名称。干净吗?

至于循环,它浪费了精力。 ColdFusion有很多方法可以使用比这更精简的列表 - 包括从查询列中创建列表。这个片段:

<cfset pic = ValueList(HomePageImage.ImageFull)/>

在单个函数调用中与循环相同。 ColdFusion和列表很紧:)

仅供参考 - 您还可以使用listSort对亨利建议的原始列表进行排序。我只是觉得我可能会给你一些选择。