Checkbox 来自sql查询的coldfusion复选框值

Checkbox 来自sql查询的coldfusion复选框值,checkbox,coldfusion,Checkbox,Coldfusion,我在这里找到了一篇关于这个的帖子,但是现在我找不到了。有点像: <cfinput type="checkbox" name="distlist" checked="<cfif #phlst_DistList# EQ Y> yes <cfelse> no </cfif>"> (#phlst#u DistList#从cfquery获取其值) 我没有得到任何CF错误,但是查询结果显示的表单是空的。如果我将cfinput类型更改为text,则一切正常

我在这里找到了一篇关于这个的帖子,但是现在我找不到了。有点像:

<cfinput type="checkbox" name="distlist" checked="<cfif #phlst_DistList# EQ Y> yes <cfelse> no </cfif>">

(#phlst#u DistList#从cfquery获取其值)

我没有得到任何CF错误,但是查询结果显示的表单是空的。如果我将cfinput类型更改为text,则一切正常,并且在文本字段中得到Y

认为这是SQL问题,我将字段的数据类型从char(1)更改为bit,并将该字段中的Y替换为1,将输入标记更改为:

<cfinput type="checkbox" name="distlist" checked="<cfif #phlst_DistList# EQ 1> yes <cfelse> no </cfif>">

但我得到了同样的结果,一张空白表格

我错过了什么


Mahalo

我建议您避免使用
以及其他
标记;他们不值得这么麻烦

也就是说,我不知道您是否可以在
标记中使用
。我想你有两个选择,一个:

<cfset isChecked = "no" />
<cfif phlst_DistList EQ "Y">
    <cfset isChecked = "yes" />
</cfif>
<cfinput type="checkbox" name="distlist" checked="#isChecked#">
这就引出了第二种选择:

<cfinput type="checkbox" name="distlist" checked="#(phlst_DistList EQ 'Y'?'yes':'no')#">


if语句的结构方式是将数据库值与变量Y进行比较。它也被选中=“selected”或只是被选中
@MattBusche,比较值是正确的(在
Y
周围至少应有单引号),但是选中的
和选中的
属性对
等的工作方式与标准HTML
等不同。Ew甚至没有注意到cfinput。正如你在回答中所说,没有理由使用它。你误解了CFML的工作原理。阅读以下内容:,特别是标题为“CFML无法执行”的位。基于这些知识:修改代码。更改数据类型。。。将该字段中的Y位替换为1位是存储布尔值的更好选择。如果它是不可为空的字段,则只需
。尽管你可以考虑一个更直观的变量名,比如“某物”。另外,正如David所提到的,CF控件有点陈旧和笨拙。一般来说,最好使用标准html元素。
BIT是存储布尔值的更好选择。
-如果使用SQL Server(无可否认,OP似乎是这样),是的。:)如果使用Oracle,OTOH,那么逻辑真/假的选项太多了。(编辑)也可以是MySQL:)我不确定Oracle的最佳选择是什么,但是
bit
是一个很好的选择,因为在CF中,1/0可以很容易地用在布尔表达式中。甚至比使用三元运算符还要短。此外,它具有很高的可读性:)太棒了!!我以前在AdobeColdfusion社区上发过帖子,但从来没有收到过像这里这样的回复,非常感谢。最终我将有5到6个复选框,我们使用它们来控制对应用程序的访问。我不应该使用数字cfif,而是应该将其作为结构或其他方式来执行。此外,我还计划将这些设置为.cfc中的客户机作用域的默认值(已经在其他一些客户机/会话作用域中这样做了),您认为这样做有什么问题吗?顺便说一下,我的后端是SQL。再次感谢。一切取决于你的应用程序。做事的方法不止一种。在我看来,设计正确的数据库结构比使用cfif还是结构更重要。我倾向于对权限使用基于行的方法,而不是单独的列标志,即AllowX、AllowY。但这实际上是一个单独的话题。如果您对特定的节代码有不同的问题,您应该打开一个单独的线程。试着保留它。它的工作原理与论坛不同,因此“基于意见的问题”往往很快就被关闭;-)
<cfinput type="checkbox" name="distlist" checked="#(phlst_DistList EQ 'Y'?'yes':'no')#">