仅显示项目是否不是最近的?

时间:2011-08-31 16:46:38

标签: coldfusion coldfusion-9

所以我们有一个新闻/公告功能,可以从数据库中提取信息并显示它

<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中不是最接近的。有关如何实现这一点的任何想法?

2 个答案:

答案 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>