背景:我要我的ColdFusion表单数据保存到一个数组,该数组存储到数据库中的列。 我将与此阵列正在调用数据库中的数据,并分析其放回我的形式,但作为做的唯一的事情“只读”。 阵列将包含输入的名称和值。
问:在以后的ColdFusion我质疑的阵列中的数据会是什么将数据解析回我的状态最佳的工艺数据库? 我一定要重新创建我的形式在一个循环? 或者,我可以针对输入和并添加值,因为我知道他们的名字?
也有在保存数据作为串行化的JSON数据节使用ColdFusion创建的阵列的任何值?
****编辑***
下面是我的数据的流程的概要。 其中一些项目,其中客户端请求的。
用户完成与65组的输入形成。
上提交的所有形式的数据被存储在被添加到数据库中的阵列。 该数据库还具有以下数据添加。 的唯一数字标识符,提交日期,所提交的形式(从一个会话变量拉动)用户ID,最后“未分配”的状态被添加到数据库中
管理员检查一个单独的页面上的队列。 该队列简单的拉仍在所有表单提交的“未分配”状态。 所述阵列并不在此队列中。
如果管理员选择在队列中的一个条目以下页面加载完全相同的形式,但我会用数组来填充值到表单中并设置所有字段为只读。 管理员从字面上只需要从表单字段的值复制并粘贴到不同的系统。 (是的,我知道这听起来很乏味,但这一特定的客户有没有其他选择,这实际上是比他们目前正在使用的过程中更好。)
该阵列将数据从字面上永远不会被用于别的以外,以确保所有的数据被收集。
该阵列中的数据将总是要加载作为一个整体,将永远不会被换一次提交。
我希望这有助于清晰起来为什么我问这些问题。 谢谢
首先,什么潘卡手段。
你可以做这样的事情。 比方说,我存储有车的优先方面。 1997年本田雅阁。 在它这样你可以存储数据。
汽车表
CarID (PrimKey) | Make | Model | Year
--------------------------------------------
47 | Honda | Accord | 1997
48 | Chevy | Malibu | 2005
然后,我可以有一个单独的表称为CarSpecs
SpecID (PrimKey) | CarID | SpecName | SpecValue
-----------------------------------------------
1001 | 47 | Color | Red
1002 | 47 | Transmsn | Auto
1003 | 47 | Doors | 4
1004 | 48 | Color | Green
1005 | 48 | Transmsn | Manual
你可以存储(品牌,型号,年份)此表为好,但让我们说你没有。
你插入变得这样的事情..
(如果你不使用cfqueryparam ,请看看它,它可以防止SQL注入,黑客的一种常见形式。)
<cfquery name="NewCar">
insert into Cars(Make, Model, Year)
values(<cfqueryparam value="#form.make#" cfsqltype="cf_sql_varchar">,
<cfqueryparam value="#form.model#" cfsqltype="cf_sql_varchar">,
<cfqueryparam value="#form.year#" cfsqltype="cf_sql_integer">)
</cfquery>
<cfset DeletedFields = "make,model,year,submit_button,tos_agree">
<cfloop list="#form.fieldnames#" index="df">
<cfif not listfind(deletedfields,df)>
<cfquery>
insert into CarSpecs(CarID,SpecName,SpecValue)
values(<cfqueryparam cfsqltype="cf_sql_integer" value="#NewCar.generatedKey#">,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#fn#">,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#form[fn]#">)
</cfquery>
</cfif>
</cfloop>
有几个简单的方法,让你刚插入的记录(的ID #NewCar.generatedkey#
这里有一个简短的文章,如果你不熟悉。
现在,当我们在涉及您以前的问题的意见
最好的办法是插入到不同的行,因为我已经以实例阐述。 随后,单独列会比将作为批量更好。
以将作为主体的唯一好处是它很容易,就是这样。
这带来的不便,但是,是多方面的。
要选择的任何数据,你必须要么
- 选择所有的数据。 - 不必要的开销
- 尝试使用SQL分析数据 - 不必要的开销
Intertable查询(连接)基于这个领域将是一个巨大的头痛。
因此,假设你设计的东西像我例子。 你可以选择这样的车的所有细节。
<cfoutput query="CarDetails" group="carID">#Make# #Model# #Year#<br /><br />
<cfoutput>#replace(specname,"_"," ","ALL")#: <input type="text" name="#specname#" value="#htmleditformat(specvalue)#" /> <br /></cfoutput>
</cfoutput>
文章来源: Parse array that contains input names and values back into a form as readonly