【发布时间】:2016-01-06 05:57:34
【问题描述】:
我接手了一个项目,该项目使用 Coldfusion 表单中的 JQuery 为“报价”文档动态添加项目行。我需要遍历表单并将每一行插入到单独字段中的 MySql 数据库中。我的问题是我需要通过动态更改名称和值来添加某些值一次,然后多次添加其他值。 这是表格:(我省略了一些只需要插入一次的字段)
<tr>
<input id="quoteDate" name="quoteDate" value="#rc.private.currDate#">
<input id="quoteID" name="quoteID" value="#rc.private.quoteID#">
</tr>
<tr id="dummyRow" class="hidden-print" style="display:none">
<td>
<input id="itemQty_" name="itemQty_" value="" class="qtyField" type="number" min="0" pattern="[0-9]*" maxlength="6" size="3">
</td>
<td>
<input id="itemPriceEach_" name="itemPriceEach_" class="itemPriceField" type="text" maxlength="8" value="">
<input id="itemDesc_" name="itemDesc_" class="hidden" value="">
</td>
最后 3 个输入是使用以下 jQuery 动态添加的:
nr = $newRow;
$newRow.removeAttr("id");
$newRow.find("td:nth-child(1)").empty().append( item.itemCode );
$newRow.find("td:nth-child(2)").empty().append( item.description );
$newRow.find("input[id^=itemQty_]").val(1).attr("id", "itemQty_" + item.itemCode) .attr("name", "itemQty_" + item.itemCode);
$newRow.find("input[id^=itemPriceEach_]").val( accounting.formatMoney(item.price) ).attr("id", "itemPriceEach_" + item.itemCode).attr("name", "itemPriceEach_" + item.itemCode);
$newRow.find("input[id^=itemDesc_]").val( item.description ).attr("id","itemDesc_" + item.description).attr("name","itemDesc_" + item.description);
我怎样才能只遍历所需的输入以插入具有不同名称和值的输入。我构建的内容已经将所有值插入到表中的一个字段中。
<cfquery name="addNewQuote" datasource="inv">
INSERT INTO inv.quotesaves
(quoteID, cNumber, quoteDate, itemcode, itemQty_, itemPriceEach_, itemDesc_,fetqty, fetPriceEach)
VALUES(
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.quoteID#">,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.cNumber#">,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.quoteDate#">,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.itemCode#">,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.itemQty_#">,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.itemPriceEach_#">,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.itemDesc_#"> )
</cfquery>
这是我的表单的转储。
-CNUMBER ZZ1753
-FIELDNAMES QUOTEDATE,QUOTEID,CNUMBER,ITEMCODE,ITEMDESC_51769,ITEMQTY_51769,ITEMPRICEEACH_51769,ITEMQTY_015,ITEMPRICEEACH_015,ITEMDESC_LABOR,ITEMQTY_011,ITEMPRICEEACH_011,ITEMDESC_OIL,ITEMQTY_,ITEMPRICEEACH_,ITEMDESC_,ADDITEMCODE
-ITEMCODE 51769
-ITEMDESC_ [empty string]
-ITEMDESC_51769 [empty string]
-ITEMDESC_LABOR labor
-ITEMDESC_OIL oil
-ITEMPRICEEACH_ [empty string]
-ITEMPRICEEACH_011 $3.00
-ITEMPRICEEACH_015 $15.00
-ITEMPRICEEACH_51769 $157.70
-ITEMQTY_ [empty string]
-ITEMQTY_011 1
-ITEMQTY_015 3
-ITEMQTY_51769 2
-QUOTEDATE October 08, 2015
-QUOTEID 82103808
action retailquote.quotesave
origPage RetailQuote.quoteSave
我需要将每个以“itemQty_”和“itemPriceEach_”开头的项目添加到单独字段中的表中。所以一行将包含“quoteID”、“itemQty_”的值和“itemPriceEach_”的值
所以经过多次试验和磨难,我终于找到了一个使用 cfloop 和 ListGetAt 的好方法。这种方式似乎工作得很好。
<cftransaction>
<cfloop from="1" to="#ListLen(form.itemQty_)#" index="i">
<cfquery name="quoteAddOns" datasource="inv">
INSERT INTO inv.quoteAddOns
(quoteID, itemDesc_,itemQty_, itemPriceEach_, fetqty, fetPriceEach)
VALUES(
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.quoteID#">,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#ListGetAt(arguments.itemDesc_,i)#">,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#ListGetAt(arguments.itemQty_,i)#">,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#ListGetAt(arguments.itemPriceEach_,i)#">,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#ListGetAt(arguments.fetQty#">,
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.fetPriceEach#">)
</cfquery>
</cfloop>
【问题讨论】:
-
能否请update your question 提供提交的实际表单字段名称示例?
CFdumpFORM(或arguments范围)在您的操作页面上。 -
谢谢。不确定我是否遵循命名约定和关系。一些名称是通过附加 itemCode 后缀 (51769) 生成的:即 ITEM_QTY_51769、ITEMPRICEEACH_51769 等。其他人呢?示例:A)无后缀
ITEMPRICEEACH_B)“011”后缀:ITEMPRICEEACH_011C)“015”后缀:ITEMPRICEEACH_015D)其他后缀:ITEMDESC_LABOR....这些都应该链接到相同的 itemCode - 51769?使用上面的字段名称,您希望在数据库中插入多少条记录? -
我对以下问题的回答可能会对您有所帮助。 stackoverflow.com/questions/32970739/…
-
这是一种可能性。但是,我对命名约定感到好奇……仅从名称来看,这种关系并不明显。您可能需要考虑更改它们以使其更直观。
-
每个后缀都链接到一个项目代码。项目代码来自相应的表格。这些名称附加有 jQuery .attr 命令。我不确定为什么每个条目都有空字符串。具体来说:51769是卖轮胎的。其他的用于安装轮胎的杂费。我遇到的麻烦是我不知道将插入多少条记录。有些引号可能有 0,有些可能有 5。
标签: jquery mysql forms loops coldfusion