我想知道在用户点击提交一次后,是否有可能让这个小提琴上的表格出现在数据库中。
+------+------+----------+
| Name | Meal | Quantity |
+------+------+----------+
| Adam | Beef | 2 |
| Adam | Pork | 1 |
| Adam | Lamb | 3 |
+------+------+----------+
http://jsfiddle.net/f8zyakvj/1/
我知道通过多次选择,您选择的所有信息都是作为数组发送的,但是对于复选框,我该如何进行以便以类似的方式发送信息。当我检查前3个盒子,并提醒食物的价值,看看我得到的东西,无论我检查哪个盒子,我得到的都是“1”。
我希望它会像多选中一样简单,我可以为cfm做这样的事情
<cfloop list="#form.meal#, #form.quantity#" index="currMeal, currQuant">
<cfquery name="Add" datasource="food">
INSERT INTO Log (Name, Meal, Quantity)
VALUES (
<cfqueryparam value="#Form.Name#" cfsqltype="cf_sql_varchar">
<cfqueryparam value="#currMeal#" cfsqltype="cf_sql_varchar">
<cfqueryparam value="#currQuant#" cfsqltype="cf_sql_integer">
)
</cfquery>
</cfloop>
对此问题的任何帮助都表示赞赏。
答案 0 :(得分:2)
<input type="checkbox" value="3" name="meal">
将与<select name="quantity_3">
示例:
<form name="form" action="Submit.cfm" method="post">
<input type="checkbox" value="1" name="meal"> Beef
<select name="quantity_1" class="GC0">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select><br>
<input type="checkbox" value="2" name="meal"> Chicken
<select name="quantity_2" class="GC1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select><br>
<input type="checkbox" value="3" name="meal"> Pork
<select name="quantity_3" class="GC2">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select><br>
<input type="checkbox" value="4" name="meal"> Lamb
<select name="quantity_4" class="GC3">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select><br>
Name: <input type="text" name="name" id="name">
<button value="submit">Submit</button>
</form>
然后在您的处理页面submit.cfm
上,您可以遍历FORM.meal(如果存在)并使用每个选中项目的值来引用相应的数量字段名称:
<!--- Make sure something was checked before proceeding --->
<cfparam name="FORM.meal" default="" />
<!--- Convert the meal list to an array for looping --->
<cfset mealArray = listToArray(FORM.meal)>
<!--- Loop over the array values --->
<cfloop array="#mealArray#" index="currMeal">
<!--- Insert into database --->
<cfquery name="Add" datasource="food">
INSERT INTO Log (Name, Meal, Quantity)
VALUES (
<cfqueryparam value="#FORM.Name#" cfsqltype="cf_sql_varchar">
,<cfqueryparam value="#currMeal#" cfsqltype="cf_sql_varchar">
,<cfqueryparam value="#FORM['quantity_#currMeal#']#" cfsqltype="cf_sql_integer">
)
</cfquery>
</cfloop>
请记住,您应该考虑在事务中包装数据库插入,和/或考虑批量插入的方法。查询循环内的数据库不被视为最佳实践。