Php 多输入插入

Php 多输入插入,php,html,mysql,forms,Php,Html,Mysql,Forms,我有一个如下所示的应用程序: 如您所见,每一行包含一个组标题(只有一个输入的行)或一个成分表单(有一个小输入,然后是一个选择,然后是另一个较大的输入) 我使用Javascript添加新的跨距。我使用以下PHP将每个成分范围分组到一个数组中,确定顺序(因为每个范围可以移动到不同的顺序),然后插入到我的数据库中 foreach($_POST as $key => $value) { $value = $this->input->post($key);

我有一个如下所示的应用程序:

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

我使用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;
}
foreach($\u发布为$key=>$value){
$value=$this->input->post($key);
$IngreditQty=$this->input->post('IngreditQty');
$measurements=$this->input->post('measurements');
$IngreditName=$this->input->post('IngreditName');
$ingredientsROW[]=数组($ingredientQTY$MEATURES$ingredientNAME);
对于($i=0,$count=count($ingredientQTY);$i<$count;$i++){
$rows[]=数组(
“IngRedientMount”=>$ingredientQTY[$i],
'ingredientType'=>$measurements[$i],
'ingredientname'=>$ingredientname[$i],
“配方id”=>$recipe\u id,
“订单”=>$i+1,
'user\u id'=>$user\u id
);
$sql=“插入`components`(`IngRedientMount`、`ingredientType`、`ingredientname`、`recipe\u id`、`order`、`user\u id`)值”;
$coma='';
foreach($oneRow作为行){
$sql.=$coma.(“.”内爆(“,”,$oneRow)。“)”;
$coma=',';
}
}
$this->db->query($sql);
打破
}
这对于插入配料行非常有效。但我不知道如何插入组标题(必须将组标题放在for循环中才能保持顺序,$I+1继续)

我想我已经想出了两个解决方案(尽管可能还有其他的,而且这些甚至可能不起作用):

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

  • 用不同的名称值作为不同的输入字段发送

  • 我的问题是:我如何用我当前的代码做到这一点,这些是有效的解决方案,还是有更好的解决方案


    谢谢你的帮助!如果你需要更多的细节,尽管问吧

    可以使用空标题,如
    ,也可以使用打开标题,如
    。第一个应该在产品范围内

    这样,您就可以按照现在的方式继续循环。和$\u POST['groupheading'][$key]返回一个groupheading或短语'product'。因此,在您的脚本中,它将是:

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

    我想我今天早上或昨天帮了你一个忙。。这仍然是一个有点奇怪的方式,你正在使用,以获得你需要的效果。实现起来要容易得多。

    谢谢你的回答!你所说的
    是什么意思它可以更容易地实现
    ?好吧,你在表单中使用的设置(HTML部分)似乎可以与更简单的代码结合使用,以实现你想要做的事情。不过,这与这个问题无关,可能只是我处理编程问题的个人观点:)我对PHP相当陌生,所以如果有更好的方法,我很乐意听到!这将涉及一个更大的示例,包括一些HTML和jQuery函数。您将从试错编码和解决遇到的问题中学到最多:)