fre*_*ent 2 mysql oop parameters coldfusion dynamic
我用这个例子来设置一个面向对象的小项目
我正在重做的页面有一些订单功能,带有动态数量的输入字段(比如一篇文章的尺寸,一些尺寸的S-XL,一些尺寸S-5XL.
在Coldfusion字段中,动态标记如下:
<input type="button" name="qty#counter#" id="qty-field#counter#"
Run Code Online (Sandbox Code Playgroud)
在我的CFC中,我列出了所有表单字段,如下所示:
<cfcomponent output="false" hint="">
<cfscript>
VARIABLES.Instance.Validation = {
field_a="validation_criteria",
field_b="validation_criteria",
...
}
</cfscript>
<cffunction name="Defaults" access="public" returntype="struct" output="false" hint="">
<cfscript>
// form defaults
var formDefaults = {
field_a="",
field_b="",
...
}
</cfscript>
<cfreturn formDefaults />
</cffunction>
<cffunction name="Commit" ... do something with db
<cfscript>
var LOCAL = {};
structAppend(defaultValues, VARIABLES.Instance.FormData);
LOCAL.xxx = defaultValues;
</cfscript>
... do stuff with LOCAL
Run Code Online (Sandbox Code Playgroud)
所以我正在创建一个包含所有传递的表单字段的对象,并在CFC中执行我的操作.在非面向对象的页面中类似于cfparam.
我的问题:
如果我在一个页面上有200个输入(简单...),我不可能每1-200个参数或将我的默认值扩展200个输入.所以,我的问题:是否有一种更简单的方法来"填充"动态数量的表单字段而不是添加虚拟字段1-500并希望这对所有情况都足够了(这是最糟糕的选择......)
AND:如果我想把它移植到MySQL ...在Coldfusion我有一个查询,如:
<cfoutput query="s">
<cfquery datasource="db">
UPDATE pos
SET qty = "#evaluate("qty#id#")#"
WHERE id = "#client_id#" and id = "#id#"
</cfquery>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
除了在Coldfusion中循环并且多次调用storedProc i-number之外,还有其他选择吗?
感谢您的投入!
编辑:
所以我目前的解决方案是这样的:
, ean1="", ean2="", ean3="", ean4="", ean5="", ean6="", ean7="", ean8="", ean9="", ean10=""
, ean11="", ean12="", ean13="", ean14="", ean15="", ean16="", ean17="", ean18="", ean19="", ean20=""
, ean21="", ean22="", ean23="", ean24="", ean25="", ean26="", ean27="", ean28="", ean29="", ean30=""
, ean31="", ean32="", ean33="", ean34="", ean35="", ean36="", ean37="", ean38="", ean39="", ean40=""
, ean41="", ean42="", ean43="", ean44="", ean45="", ean46="", ean47="", ean48="", ean49="", ean50=""
, ean51="", ean52="", ean53="", ean54="", ean55="", ean56="", ean57="", ean58="", ean59="", ean60=""
, ean61="", ean62="", ean63="", ean64="", ean65="", ean66="", ean67="", ean68="", ean69="", ean70=""
, ean71="", ean72="", ean73="", ean74="", ean75="", ean76="", ean77="", ean78="", ean79="", ean80=""
, ean81="", ean82="", ean83="", ean84="", ean85="", ean86="", ean87="", ean88="", ean89="", ean90=""
, ean91="", ean92="", ean93="", ean94="", ean95="", ean96="", ean97="", ean98="", ean99="", ean100=""
// more
, menge1="", menge2="", menge3="", menge4="", menge5="", menge6="", menge7="", menge8="", menge9="", menge10=""
, menge11="", menge12="", menge13="", menge14="", menge15="", menge16="", menge17="", menge18="", menge19="", menge20=""
, menge21="", menge22="", menge23="", menge24="", menge25="", menge26="", menge27="", menge28="", menge29="", menge30=""
, menge31="", menge32="", menge33="", menge34="", menge35="", menge36="", menge37="", menge38="", menge39="", menge40=""
, menge41="", menge42="", menge43="", menge44="", menge45="", menge46="", menge47="", menge48="", menge49="", menge50=""
, menge51="", menge52="", menge53="", menge54="", menge55="", menge56="", menge57="", menge58="", menge59="", menge60=""
, menge61="", menge62="", menge63="", menge64="", menge65="", menge66="", menge67="", menge68="", menge69="", menge70=""
, menge71="", menge72="", menge73="", menge74="", menge75="", menge76="", menge77="", menge78="", menge79="", menge80=""
, menge81="", menge82="", menge83="", menge84="", menge85="", menge86="", menge87="", menge88="", menge89="", menge90=""
, menge91="", menge92="", menge93="", menge94="", menge95="", menge96="", menge97="", menge98="", menge99="", menge100=""
};
Run Code Online (Sandbox Code Playgroud)
所以我很不开心但是很安全,直到我的动态形式吐出100多个字段......如果有人知道设置"param"/空变量的代码密集程度比上面那么少,请填写.谢谢!
,
Run Code Online (Sandbox Code Playgroud)
在循环中执行cfparam有什么问题?
<cfset numOfFields = 200>
<cfset fields = "ean,menge">
<cfloop list="#fields#" index="field">
<cfloop from="1" to="#numOfFields#" index="i">
<cfparam name="Form.#field##i#" default="">
</cfloop>
</cfloop>
Run Code Online (Sandbox Code Playgroud)