简介:大家好,
我正试图从Coldfusion的第3页第1页中选择一个变量。在研究了CF的变量传递后,我发现了一些使用会话或全局变量传递的方法,但不确定这些方法是否适合我尝试的操作。
问题:我不确定哪种方式是传递变量的最佳方式,因为最终用户每天将多次使用此表单,而且我担心会话变量无法从最终用户无法成功关闭会话中正确清除。
目标:我的表单的目的是通过提取客户的订单ID来更新数据库中的信息。在我的第一页上,我有以下表单,以便最终用户可以根据客户的订单标识进行搜索并提取客户的当前信息
<cfform action="searchresults.cfm" method="post">
<label for="Search" style="color: #fff !Important;"> Customer's OrderID:</label>
<cfinput type="text" name="search" id="search" required="Yes" message="Please enter
an OrderID." class=" form-control" >
<input style="margin-top:20px;" type="submit" value="Search" class="btn red-btn">
</cfform>
在我的第3页上,我有一个CFQUERY,我正在使用它来更新基于第1页表单中搜索变量的数据库。
<cfquery name="updateform" datasource="collinsmobile">
UPDATE Table
SET
FName= <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.FName#" />
LName = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.LName#" />
CustomerEmail = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.CustomerEmail#" />
CustomerPhone = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.CustomerPhone#" />
CAddress = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.CAddress#" />
City = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.City#" />
St = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.State#" />
Zip = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.Zip#" />
Where OrderID= '#search#'
</cfquery>
如果有人能帮助我了解使用";搜索";变量,或者为我指明正确的方向,我将不胜感激!
注意:我的第2页被称为"searchresults.cfm";并且是针对页面1的查询以及针对页面3上的最终更新查询的适当形式。我觉得它的代码太多了,与发布无关,但如果需要,可以提供代码!
这更多的是一个注释,但它太长了,无法放入
代替
<cfinput type= "hidden" name="TestResult" id="TestResult" value=#TestResult# />
考虑
<input type= "hidden" name="TestResult" value="#encodeForHTMAttribute(TestResult)#">
为什么这样更好
从<cfinput
开始
- cfform确实是一项糟糕的技术
- 你根本没用
下一个id=
这是用于css/javascript交互的。这在这里不适用
下一个value=#TestResult#
- 应该引用值
- 转义值很重要,因为它们可能包含会破坏代码的字符
最后一次/>
XHTML已失效
我用来回答这个问题的原因是Will Belden的评论。我最终通过在第二页的表格中传递了一个隐藏变量
<cfset TestResult = #search# />
<cfinput type= "hidden" name="TestResult" id="TestResult" value=#TestResult# />
CFSET和隐藏变量的组合能够让我到达需要的地方。