2014-01-27 3 views
0

Я использую CodeIgniter, и мне не удается получить массив из ввода. Я искал, но я не могу решить эту проблему. Дело в том, что я использую кнопку для динамического добавления текстовых полей.Извлечение массива данных из POST CodeIgniter

(HTML от view.php)

<?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, и это сработало нормально ... Я ценю любую помощь! Заранее спасибо.

+0

first print_r ($ _ POST ['ings']); и проверьте, содержит ли он массив или нет, потому что я запускаю этот пример, он отлично работает для меня. Может быть, ваша проблема с этой строкой $ this-> input-> post ('ings'); попробуйте использовать $ ings = $ _POST ['ings']; и проверьте –

+0

Спасибо за ответы. К несчастью, я пробовал то, что вы пробовали, и это не сработало. Добавление foreach ($ ings as $ ing) {echo $ ing; } Показывает только первый ввод данных. И попробуйте print_r ($ _ POST ['ings']); Выдает только первый результат (выход: Array ([0] => ing1)) Я понятия не имею, почему это происходит ... –

ответ

1

$ this-> input-> post() функция не будет работать, чтобы отметить, если вход представляет собой такой тип массива. если вход является таким типом массива вы должны использовать CLASSIC mehtod

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

0

Для входов массива, вы можете использовать $this->input->post(), как показано ниже. Вы сделали правильно. Вы можете использовать foreach, как показано ниже, чтобы получить все значения из массива.

$ings = $this->input->post("ings"); 

foreach($ings as $ing) 
{ 
    // your code here 
} 
0

Вы использовали ings [] как имя. Теперь, если вы получите это с помощью $ this-> input-> post ("ings"); он всегда будет массивом. Теперь используйте цикл Foreach или For, чтобы получить элементы массива.

Смежные вопросы