首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CFLOOP复制

CFLOOP复制
EN

Stack Overflow用户
提问于 2012-04-11 03:53:29
回答 2查看 484关注 0票数 0

我有一个由两个循环生成的下拉列表。内部循环生成一系列数字,即从0到23。外部循环是一个查询循环,它根据我的数据库中存储的值从23个数字中选择正确的值。

我这里的问题是,这两个循环冲突,导致从0到23的数字显示两次。如何既保留两个循环又避免这个问题呢?当通过尝试提交表单两次并删除用户的输入来提交表单时,此问题也会导致问题。

这是我的代码:

代码语言:javascript
复制
<select id="openHours#CountVar#" name="openHours#CountVar#">
 <cfloop query="doctorHours" >                
   <cfloop from="0" to="23" index="OpenHours"> 
   <option value="#openHours#"
      <cfif TimeFormat(doctorHours.openTime,'HH') EQ OpenHours AND CountVar EQ doctorHours.day > selected="selected"</cfif>>#OpenHours#</option>
   </cfloop>
  </cfloop>
</select>

这是我针对该查询的CFDUMP

代码语言:javascript
复制
query
RESULTSET   
query
    CLOSETIME           DAY DOCTORID            OPENTIME
1   1970-01-01 16:00:00.0   4   2011041516290025478779  1970-01-01 10:00:00.0
2   1970-01-01 16:00:00.0   1   2011041516290025478779  1970-01-01 13:00:00.0
3   1970-01-01 16:00:00.0   2   2011041516290025478779  1970-01-01 13:00:00.0
CACHED  false
EXECUTIONTIME   0
SQL select doctorID, opentime, closetime, day from doctorBusinessHours where doctorID='2011041516290025478779' 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-11 04:30:47

您应该只返回所需的小时数,然后循环创建下拉列表:

DATEPART(hh,yourdate)将返回日期时间值的小时数:

代码语言:javascript
复制
<cfquery name="doctorHours" datasource="#ds#">
    SELECT doctorID,DATEPART(hh,openTime) As OpenHours, DATEPART(hh,closetime) As CloseHours 
    FROM   doctorHours 
    WHERE  day = #CountVar#
    AND    doctorID='#docID#'
</cfquery>

ValueList会将您的查询结果转换为列表:

代码语言:javascript
复制
<cfset openTimesList = ValueList(doctorHours.OpenHours) />
<cfset closeTimesList = ValueList(doctorHours.CloseHours ) />

ListContains将返回值在列表中的索引:

代码语言:javascript
复制
<select id="openHours#CountVar#" name="openHours#CountVar#">
    <cfloop from="0" to="23" index="OpenHours"> 
       <option value="#openHours#"
           <cfif ListContains(openTimesList,OpenHours) NEQ 0 > 
              selected="selected"
           </cfif>
       >#OpenHours#</option>
   </cfloop>
</select>

您可以对closeTimesList使用相同的策略。

票数 2
EN

Stack Overflow用户

发布于 2012-04-11 04:11:26

上面代码中显示的Hmmm....the值的数量将等同于查询X 23返回的记录数量。如果你的查询返回2条记录,你会看到46个选项,以此类推。看起来您认为查询只有1条记录。我会建议它可能有更多。

在您的查询中尝试LIMIT 1或TOP 1-或者使用Maxrows (如注释中所建议的)...但要确保你知道你在包括什么,你在排除什么。你需要知道为什么你的查询不是你所期望的:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10095496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档