cfloop пустое условие запроса? - PullRequest
0 голосов
/ 25 августа 2011

У меня есть следующий код ColdFusion, который получает информацию из базы данных и отображает результаты на домашней странице. Вот код cfquery:

<cfquery name="getSchedule" datasource="#APPLICATION.datasource#" dbtype="odbc">
SELECT * FROM SCHEDULE_Days SD 
LEFT JOIN SCHEDULE_ScheduledClasses SSC ON SD.day_id = SSC.day_id
LEFT JOIN SCHEDULE_Classes SC ON SSC.class_id = SC.class_id
WHERE SD.day_date = #createODBCDate(now())# AND SSC.schedule_cancelled = 0
ORDER BY SSC.start_time
</cfquery>

и выходной код:

<cfoutput>
<cfloop query="getSchedule">
<tr>
<td width="40">&nbsp;</td>
<td width="74">#lcase(timeFormat(start_time,"h:mm tt"))#</td>
<td width="158">#class_name#</td>
</tr>
</cfloop>
</cfoutput>

Проблема в том, что если в getSchedule нет данных (т.е. нет ScheduledClasses), он ничего не отображает.

Я ищу способ изменить это так, чтобы в случае, если нет данных для отображения, я мог указать сообщение и код, который будет отображаться при его отсутствии.

Ответы [ 4 ]

11 голосов
/ 25 августа 2011

Сначала просто быстрый совет CF. Вы можете улучшить код, сделав это следующим образом:

<cfif getSchedule.recordcount GT 0>
    <cfoutput query="getSchedule">
    <tr>
        <td width="40">&nbsp;</td>
        <td width="74">#lcase(timeFormat(getSchedule.start_time,"h:mm tt"))#</td>
        <td width="158">#getSchedule.class_name#</td>
    </tr>
    </cfoutput>
<cfelse>
    <p>Empty record message here</p>
</cfif>

Причина, по которой я поставил вывод запроса первым, скорее всего, это произойдет чаще, чем с вашим пустым сообщением set.

1 голос
/ 25 августа 2011
<cfif getSchedule.recordcount>
.... do something
</cfif>

Будет работать так же, как нет необходимости для GT 0

0 голосов
/ 26 августа 2011
<cfif getSchedule.RecordCount>
<table>
<cfoutput query="getSchedule">
<tr>
<td width="40">&nbsp;</td>
<td width="74">#lcase(timeFormat(start_time,"h:mm tt"))#</td>
<td width="158">#class_name#</td>
</tr>
</cfoutput>
</table>
<cfelse>
<p>There are currently no records</p>
</cfif>
0 голосов
/ 25 августа 2011

Используйте recordCount, чтобы определить, есть ли в запросе какая-либо запись


<cfif getSchedule.recordcount gt 0>
.... do something
</cfif>
...