0

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

你选择了#getAll.id#

这是我的代码:

索引.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>

选择.cfm

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

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

4

3 回答 3

4

您没有将value属性放在cfoutput标记中,因此它被作为#getAll.id#结构中的键而不是查询中的值来处理。如果您将您的更新cfloop为 a,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>

选择.cfm

<cfoutput>You have chosen #form.listPersons#</cfoutput>
于 2014-05-12T14:22:22.427 回答
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 FORM。

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

<cfoutput>#Form.listPersons#</cfoutput>
于 2014-05-12T15:15:04.990 回答
1
<cfoutput query="getAll">
#id# #name# 
</cfoutput>

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

于 2014-05-12T19:31:12.137 回答