所以我们有一个新闻/公告功能,可以从数据库中提取信息并显示它
<cfquery name="announcement" datasource="#application.datasource#" dbtype="odbc">
SELECT top 2 * FROM NewsEvents
WHERE type = 2 AND active = 1 AND publish_datetime <= #now()# AND show_on_home = 1 AND item_datetime >= #createOdbcDate(now())#
ORDER BY item_datetime ASC
</cfquery>
我们要做的是在这些公告块中显示一段HTML,条件是两个块中的一个不是两个块中最新的块。
HTML包含在以下代码中:
<cfif announcement.recordCount gt 0>
<cfloop query="announcement">
<cfoutput>
html
</cfoutput>
</cfloop>
<cfelse>
<cfoutput><p>There are currently no announcements.</p></cfoutput>
</cfif>
我希望只为BOTTOM公告显示HTML的一个组件,这个组件在item_datetime中不是最接近的。有关如何实现这一点的任何想法?
答案 0 :(得分:3)
您按日期订购,所以请执行以下操作:
<cfif CurrentRow EQ 1>
We're showing the first record, so show some stuff.
</cfif>
CurrentRow
始终在循环中可用,以显示您当前所在查询的哪条记录。因此,鉴于您当前的查询(以及一些直接在我脑海中编制的数据,您将最终获得此输出:
Record 1: August 29, 2011
We're showing the first record, so show some stuff
Record 2: August 30, 2011
您按日期ASC排序,因此最早的记录是第一个,而较新的记录是最后一个。我建议您将排序更改为DESC,或者在前两个之后添加第三个公告后,您永远不会获得更新的记录。然后,您可以在CF方面使用它们,使其处于您所遵循的显示顺序。
答案 1 :(得分:0)
您可以像这样在CFQUERY语句中添加修饰符。我还会修改你的CFIF recordCount语句,以便在此时查找超过1条记录。
<cfif announcement.recordCount gt 1>
<cfoutput query="announcement" startRow="2">
<!--- Throw my output here --->
</cfoutput>
<cfelse>
<p>There are currently no announcements.</p>
</cfif>