【问题标题】:Retrieving array of data from POST CodeIgniter从 POST CodeIgniter 检索数据数组
【发布时间】:2014-01-27 20:26:07
【问题描述】:

我正在使用 CodeIgniter,但在从输入中检索数组时遇到问题。 我一直在寻找,但我无法解决这个问题。问题是我正在使用一个按钮来动态添加文本框。

(来自 view.php 的 HTML)

<?php echo form_open('verifynovareceita'); ?>
(...)
<div id="ings">
       <p>Ingredients:</p>
       <input type="text" name="ings[]"/>
</div>

<input type="button" value="Add another ingrdient" name="add" onClick="addTextBox()">

(...)

<script type='text/javascript'>
    function addTextBox() {
        var ings = document.getElementById("ings");
        var input1 = document.createElement("input");
        input1.type = "text";       
        input1.name = "ings[]";
        ings.appendChild(input1);
    }

并且(视觉)结果是预期的。它创建了我想要的尽可能多的输入。问题在于从 POST 数组中检索数据时:

(来自控制器的 PHP)

  $ings = $this->input->post('ings');
  $row_count = count($ings);

$row_count 的值为 1,无论存在多少文本框。 我的代码有问题吗?或者是我使用 form_open 使其无法工作的事实吗? 我试过做同样的事情,没有codeigniter,它工作得很好...... 我很感激任何帮助!提前谢谢你。

【问题讨论】:

  • 第一个 print_r($_POST['ings']);并检查它是否包含数组,因为我运行这个示例它对我来说很好。这条线可能是你的问题 $this->input->post('ings');尝试使用 $ings = $_POST['ings'];并检查
  • 感谢您的回答。不幸的是,我已经尝试了您的建议,但没有奏效。添加 foreach($ings as $ing) { echo $ing; } 只显示 ings 的第一个输入。并尝试 print_r($_POST['ings']);也只给出第一个 ing(输出:Array ( [0] => ing1 ))我不知道为什么会这样......

标签: php html codeigniter


【解决方案1】:
如果输入是这种类型的数组,

$this->input->post() 函数将无法标记。如果输入是这种类型的数组,您应该使用经典方法

$ings = $_POST('ings'); $row_count = count($ings);

【讨论】:

    【解决方案2】:

    对于数组输入,您可以使用$this-&gt;input-&gt;post(),如下所示。你做得对。您可以使用foreach 如下所示从数组中获取所有值。

    $ings = $this->input->post("ings");
    
    foreach($ings as $ing)
    {
      // your code here
    }
    

    【讨论】:

      【解决方案3】:

      您使用 ings[] 作为名称。现在,如果您使用 $this->input->post("ings"); 检索它它永远是一个数组。现在使用 Foreach 循环或 For 循环来获取数组元素。

      【讨论】:

        猜你喜欢
        • 2015-04-20
        • 1970-01-01
        • 2016-04-21
        • 1970-01-01
        • 1970-01-01
        • 2021-12-14
        • 1970-01-01
        • 1970-01-01
        • 2016-09-26
        相关资源
        最近更新 更多