我是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>
你能告诉我我犯了哪个错误吗?
答案 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循环内重复查询名称。