我正在开发一个网站,而后端开发人员则是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>
答案 0 :(得分:2)
<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对亨利建议的原始列表进行排序。我只是觉得我可能会给你一些选择。