cfloop空查询条件?

时间:2011-08-25 03:05:52

标签: coldfusion cfloop

我有以下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 个答案:

答案 0 :(得分:11)

首先只是一个快速的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>

我将查询输出放在第一位的原因很可能发生在你的空集消息上。

答案 1 :(得分:1)

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

只需要工作就不需要gt 0

答案 2 :(得分:0)

使用recordCount检测查询是否有任何记录


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

答案 3 :(得分:0)

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