2013-03-27 4 views
0

У меня есть три массивов, которые выглядят следующим образом:Многомерных массивов для вставки для одной строки

ingredientQTY является первым полем ввода в каждой строке, измерения является выбор/выпадающим в каждой строке, и ingredientsNAME - последнее поле ввода в каждой строке. Как вы можете видеть, могут быть бесконечные числа ингредиентQTY's, ингредиентNAME и измерения.

picture

Когда я посылаю их на мой PHP скрипт, данные в массивы, как:

IngredientQTY 
(
    [0] => 5 //The first row 
    [1] => 5 //The next rows value 
) 
Measurements 
(
    [0] => Bunch //The first row 
    [1] => Bunch //The next rows value 
) 
IngredientName 
(
    [0] => 5 //The first row 
    [1] => 5 //The next rows value 
) 

Я пытаюсь загрузить их на столе под названием ингредиентов, который имеет 3 колонки: ingredientNAME , ingredientQTY, и measurements.

В моем PHP скрипт, я комбинируя их в многомерный массив, который присваивается $ingredientsROW:

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); 
     break; 
} 

Мой вопрос: Как я могу получить группу все первый ряд элементов формы (которые означает первый ingredientQTY, первый measurements ниспадающее меню и первый ingredientNAME и вставить их в ряд?

единственный способ, которым я мог думать о том, чтобы иметь одну вставку, где я вставить ingredientQTY, затем посмотреть идентификатор строки I просто вставил и использовал два обновления mysql для той же строки, но я уверен, что есть более эффективные способы обойти это.

+0

У вас есть JavaScript для кнопки «Добавить ингредиент»? – Halcyon

+0

цикл foreach, который ломается в первом цикле, выглядит не совсем корректно для меня ... –

+0

Обратите внимание, что поля выбора не доступны для кликов. (FF на Linux) – hek2mgl

ответ

1

Итерация данных и создать массив так:

for ($i = 0, $count = count($ingredientQTY); $i < $count; $i++) { 
    $rows[] = array(
     'QTY'   => $ingredientQTY[$i], 
     'measurement' => $measurements[$i], 
     'name'  => $ingredientNAME[$i] 
    ); 
} 

С помощью этого массива можно создать вставку достаточно легко и вставить целые ряды.

2

Будет что-то вроде этой работы?

foreach($_POST['IngredientQTY'] as $index=>$qty) 
    mysql_query("insert into ingredients ". 
       "set IngredientQTY='".addslashes($qty)."'". 
       ", measurements ='".addslashes($_POST['measurements'][$index])."'". 
       ", ingredientNAME ='".addslashes($_POST['ingredientNAME'][$index])."'); 
+0

Да, это тоже должно работать. Просто не забудьте использовать 'mysqli_' функции вместо' mysql_', так как последние устарели. При использовании MySql вы также можете использовать 'mysqli_escape_string()' вместо 'addslashes()'. –

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