【发布时间】:2013-03-27 22:59:21
【问题描述】:
我有一个如下所示的应用程序:
如您所见,每一行都包含一个组标题(只有一个输入的行)或一个成分表单(有一个小输入,然后是一个选择,然后是另一个更大的输入)。
我使用 Javascript 来添加新的跨度。我使用下面的 PHP 将每个成分跨度分组到一个数组中,确定顺序(因为每个跨度可以移动到不同的顺序),然后插入到我的数据库中。
foreach($_POST as $key => $value) {
$value = $this->input->post($key);
$ingredientQTY = $this->input->post('ingredientQTY');
$measurements = $this->input->post('measurements');
$ingredientNAME = $this->input->post('ingredientNAME');
$ingredientsROW[] = array($ingredientQTY, $measurements, $ingredientNAME);
for ($i = 0, $count = count($ingredientQTY); $i < $count; $i++) {
$rows[] = array(
'ingredientamount' => $ingredientQTY[$i],
'ingredientType' => $measurements[$i],
'ingredientname' => $ingredientNAME[$i],
'recipe_id' => $recipe_id,
'order' => $i + 1,
'user_id' => $user_id
);
$sql = "INSERT `ingredients` (`ingredientamount`,`ingredientType`,`ingredientname`, `recipe_id`, `order`, `user_id`) VALUES ";
$coma = '';
foreach ($rows as $oneRow) {
$sql .= $coma."('".implode("','",$oneRow)."')";
$coma = ', ';
}
}
$this->db->query($sql);
break;
}
这对于插入成分行很有效。但我不确定如何插入组标题(必须将其放在 for 循环中以保持顺序,$i + 1,继续)。
我想我已经找到了两个解决方案(尽管可能还有其他解决方案,这些甚至可能都行不通):
-
组标题输入字段是否具有与成分文本字段之一相同的名称值,并随其发送一个隐藏值,称其为组标题?
-
将其作为具有不同名称值的不同输入字段发送?
我的问题是:如何使用我当前的代码来做到这一点,这些是有效的解决方案,还是有更好的解决方案?
感谢大家的帮助!如果您需要更多详细信息,请询问!
【问题讨论】: