【问题标题】:Multiple Inputs Insert多输入插入
【发布时间】: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,继续)。

我想我已经找到了两个解决方案(尽管可能还有其他解决方案,这些甚至可能都行不通):

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

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

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

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

【问题讨论】:

    标签: php html mysql forms


    【解决方案1】:

    您可以使用&lt;input type="hidden" name="groupheading[]" value="product" /&gt; 之类的空标题和&lt;input type="text" name="groupheading[]" value="" /&gt; 之类的开放标题。第一个应该在产品跨度内。

    这样,您可以按照现在的方式继续循环。 $_POST['groupheading'][$key] 要么返回组标题,要么返回短语“产品”。因此,在您的脚本中将是:

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

    我想我今天早上或昨天为您提供了答案。您使用它来获得所需的效果仍然有点奇怪。它可以更容易地实现。

    【讨论】:

    • 感谢您的回答! it can be achieved much easier 是什么意思?
    • 好吧,您用于表单的设置(HTML 部分)似乎可以与更简单的代码结合使用,以实现您想要做的事情。然而,它与这个问题无关,可能只是我解决编程问题的方式的个人意见:)
    • 我是 PHP 新手,如果有更好的方法,我很想听听!
    • 这将涉及一个更大的示例,包括一些 HTML 和 jQuery 函数。您将从试错编码和解决遇到的问题中学到最多的东西:)
    猜你喜欢
    • 2019-10-24
    • 2016-04-03
    • 2021-12-09
    • 1970-01-01
    • 2017-08-03
    • 2017-04-03
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多