Показывать только если товар не самый последний? - PullRequest
1 голос
/ 31 августа 2011

Итак, у нас есть функция новостей / объявлений, которая извлекает информацию из базы данных и отображает ее

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

Я хочу, чтобы один компонент HTML отображался только дляНИЖЕ объявление, которое не является ближайшим в item_datetime.Есть мысли о том, как этого добиться?

Ответы [ 2 ]

3 голосов
/ 31 августа 2011

Вы заказываете по дате, поэтому просто сделайте что-то вроде этого:

<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 в порядке отображения.

0 голосов
/ 31 августа 2011

Вы можете добавить модификатор к вашему выражению 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>
...