如何将值从查询设置为输入文本框

时间:2017-09-13 10:20:13

标签: coldfusion coldfusion-9

当用户单击表格中特定行的编辑时,我希望同一页面中的输入文本框用该行的详细信息填充。我尝试了这个,但它没有用。

<cfquery name="getDataForEdit" datasource="dsn">
  select * from usercardetails where id = '#url.id#'
</cfquery>
<cfoutput>
  <cfset #form.username# = #getDataForEdit.username#>

</cfoutput>

1 个答案:

答案 0 :(得分:2)

以此为例,让您前进......

<cfquery name="getDataForEdit" datasource="dsn">
     select * from usercardetails where id = '#url.id#'
</cfquery>

<!--- 
OPTIONAL IMPROVEMENT: You might change your SQL to use CFQueryParam, this will protect against SQL injection
select * from usercardetails where id = <cfqueryparam cfsqltype="CF_SQL_NUMERIC" value="#url.id#" />
--->

<!--- 
OPTIONAL FOR DEBUGGING: If you uncomment this block it will show you the results of your query.
<cfoutput><cfdump var="#getDataForEdit#" label="getDataForEdit" expand="No" /><br /></cfoutput>
--->

<cfoutput>

 <cfif getDataForEdit.recordcount is 1> <!--- Check that you only get one row back in results --->

  <!--- Coldfusion will build forms for you using cfform, but many coders keep away from it, so instead you need to build the HTML of your form yourself. --->

  <form action="index.cfm" method="post">
      <p><label for="username">Username</label><input type="text" id="username" name="username" value="#getDataForEdit.username#" /></p> 
      <p><input type="submit" id="butty01" name="butty01" value="Go" /></p>
  </form>

 <cfelseif getDataForEdit.recordcount is 0> <!--- If no results --->
     <p>No records found</p>
 <cfelse> <!--- Anything else will mean many results --->
     <p>An error occurred (Multiple records with this ID found)</p>
 </cfif>

</cfoutput>

我已经在代码中添加了一些可选改进的评论。

另请注意......

<cfset #form.username# = #getDataForEdit.username#>

会给你带来麻烦。

<cfset username = getDataForEdit.username>

将创建/设置一个变量用户名,该用户名等于查询中用户名列的值。在此上下文中不需要#标记。 #打印出变量的值,所以你可以这样做......

<cfset username = "#getDataForEdit.username#">

哪个会将用户名列的值打印成一个文本字符串(字符串中唯一的东西就是值),并且文本字符串将被分配给变量username。

form

是一个保留字,因为它是一个结构(它值得查找结构),其中包含发布到页面的所有表单变量数据。您可以使用cfdump

检查表单
<cfoutput><cfdump var="#form#" label="form" expand="No" /><br /></cfoutput>

要打印出表单中的一个值,您可以

#form.username#

所以(当你是初学者时非常容易混淆)......

<cfset #form.username# = #getDataForEdit.username#>

将创建一个变量,其名称与发布到您网页的表单字段用户名的值相对应,并使用查询中的用户名填充该变量。你真的不想要那个。

坚持下去。一旦你得到一些基本的概念,Coldfusion就是一种可编码的语言。