2011-08-31 3 views
1

그래서 우리는 데이터베이스에서 정보를 가져옵니다 그것을 표시하는 뉴스/공지 기능이최근 항목이 아닌 항목 만 표시 하시겠습니까?

<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 발표, item_datetime에서 가장 가까운하지 않은 일에 대해 표시되는 HTML의 하나 개의 구성 요소를 원한다. 이 작업을 수행하는 방법에 대한 의견이 있으십니까?

+0

지금까지 몇 가지 좋은 제안이 있습니다. 그러나 귀하의 의견 * "가장 가까운 item_datetime"* 몇 가지 설명을 사용할 수 있습니다. 또한 쿼리가 단일 레코드 만 반환하는 경우 원하는 결과는 무엇입니까? – Leigh

답변

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

그래, 나는 그들이 후에뿐만 아니라 정확하게 정렬 정렬하기가 힘들었다 :). 그들은 ASC를 분류하기 때문에 BOTTOM은 최신 목록입니다. –

+0

그가 두 항목 사이에 줄을 써야하는지 궁금합니다 ... 어떤 경우에는 '';-) – nykash

0

CFQUERY 문에 수정자를 추가 할 수 있으며, CFIF recordCount 문을 수정하여이 시점에서 둘 이상의 레코드를 찾습니다.

<cfif announcement.recordCount gt 1> 
    <cfoutput query="announcement" startRow="2"> 
     <!--- Throw my output here ---> 
    </cfoutput> 
<cfelse> 
    <p>There are currently no announcements.</p> 
</cfif> 
+0

사실, 이것을 정말로 최적화하고 싶다면 ... CFOUTPUT 랩을 제거하고 CFLOOP를 CFOUTPUT으로 변경하십시오. 그것은 똑같이 작동 할 것입니다. –

관련 문제