ColdFusion无法读取cfselect的选项值

时间:2014-05-12 14:11:21

标签: coldfusion cfselect

我是ColdFusion的初学者,我只是尝试了一些基本功能。我试图循环一个简单的查询并将值放在一个元素中。作为元素的值,我试图设置查询的每条记录的id。提交后我试图读取所选值但我只得到

  

您选择了#getAll.id#

这是我的代码:

index.cfm

<cfquery datasource="testdb" name="getAll">
  select *
  from Personen
</cfquery>
<cfform action="chosen.cfm" method="post">
  <cfselect name="listPersons">
    <cfloop query="getAll">
      <option value="#getAll.id#"><cfoutput>#getAll.id# #getAll.name# #getAll.vorname# #getAll.gebdate# <BR></cfoutput>
    </cfloop>
  </cfselect>
  <cfinput type="Submit" name="Senden" value="Senden">
</cfform>

chosen.cfm

<cfoutput>You have chosen #listPersons#</cfoutput>

你能告诉我我犯了哪个错误吗?

3 个答案:

答案 0 :(得分:4)

您没有将value属性放在cfoutput标记中,因此它被处理为#getAll.id#作为结构中的键而不是值来自查询。如果您将cfloop更新为cfoutput,则您的问题将得到解决。

一些指针 - 您应该将该变量置于selected.cfm范围内,并且您不需要使用cfform常规form就可以了。

<cfquery datasource="testdb" name="getAll">
  select *
  from Personen
</cfquery>
<form action="chosen.cfm" method="post">
  <select name="listPersons">
    <cfoutput query="getAll">
      <option value="#getAll.id#">#getAll.id# #getAll.name# #getAll.vorname#     #getAll.gebdate#</option>
    </cfoutput>
  </select>
  <input type="Submit" name="Senden" value="Senden">
</form>

chosen.cfm

<cfoutput>You have chosen #form.listPersons#</cfoutput>

答案 1 :(得分:1)

您的代码适用于我的测试数据库,但Chosen.cfm上的listPersons值并非我认为您的意图。我会将代码更改为以下内容:

<cfquery datasource="testdb" name="getAll">
  select *
  from Personen
</cfquery>
<cfform action="chosen.cfm" method="post">
  <cfselect name="listPersons">
    <cfoutput query="getAll">
      <option value="#getAll.id#">#getAll.id# #HTMLEditFormat(getAll.name)# #HTMLEditFormat(getAll.vorname)# #getAll.gebdate# 
    </cfoutput>
  </cfselect>
  <cfinput type="Submit" name="Senden" value="Senden">
</cfform>

我所做的是将CFLOOP改为CFOUTPUT,然后删除了您的CFOUTPUT。我还添加了HTMLEditFormat函数,以防NAME或VORNAME包含一些不能与显示效果很好的字符。我假设ID是数字,而GEBDATE是一个日期,因此不需要这些日期。我也从你的OPTION中移除了BR元素,而不是我认为它导致了一个问题,但我看不出它会如何影响显示器,所以似乎不需要。我个人会关闭OPTION,但不需要运行。如果您的终极代码没有运行CFFORM提供的任何内容,那么我就不会使用它而只是使用HTML表单。

然后在Chosen.cfm上我将范围输出:

<cfoutput>#Form.listPersons#</cfoutput>

答案 2 :(得分:1)

<cfoutput query="getAll">
#id# #name# 
</cfoutput>

如果使用cfoutput指定要循环的查询,则不需要在cfoutput循环内重复查询名称。