多输入插入

时间:2013-03-27 22:59:21

标签: php html mysql forms

我的应用程序看起来像这样:

enter image description here

如您所见,每行包含一个组标题(只有输入的行)或一个成分表单(其中有一个小输入,然后是一个选择,然后是另一个更大的输入)。

我使用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,继续)。

我想我已经找到了两个解决方案(虽然可能还有其他解决方案,但这些解决方案可能都不起作用):

  1. 组标题输入字段是否与其中一个成分文本字段具有相同的名称值,并随之发送隐藏值,并将其标题为组?

  2. 将其作为具有不同名称值的不同输入字段发送?

  3. 我的问题是:如何使用我当前的代码执行此操作,并且这些是有效的解决方案之一,还是有更好的解决方案?

    感谢您的帮助!如果您需要更多详细信息,请询问!

1 个答案:

答案 0 :(得分:1)

您可以使用<input type="hidden" name="groupheading[]" value="product" />之类的空标题和<input type="text" name="groupheading[]" value="" />之类的开放标题。第一个应该在产品范围内。

这样,您就可以按照现在的方式继续循环。而$ _POST [&#39; groupheading&#39;] [$ key]要么返回一个groupheading,要么返回短语&#39; product&#39;。所以,在你的脚本中它将是:

if($_POST['groupheading'][$key] == "product") {
  // insert product
} else {
  // insert group heading
}

我想我今天早上或昨天给你一个答案帮助你......你用来获得你需要的效果仍然有点奇怪。它可以更容易实现。