2015-06-02 4 views
0

У меня есть форма для индексации частей, относящихся к схематическим чертежам. У нас есть сотни чертежей, и у каждого из них будет другое количество деталей, прикрепленных к нему. Каждая часть требует трех частей информации: number, part_id и Description. Исходная форма фиксирует это и позволяет пользователю добавлять в форму столько строк, сколько необходимо для получения всех деталей из чертежа. Поля формы называются Number_1, Part_id_1 и Description_1. Каждая строка, добавленная в форму, увеличивает число в конце на единицу. Например, если схема содержит 10 частей, я получаю Number_1 - Number_10.Добавление строк в базу данных из динамической формы в PHP

while ($i <= $Fieldnum) { 
      $Number = "Number_".$i; 
      $PartNumber = "PartNumber_".$i; 
      $Description = "Description_".$i; 
      print (" 
      <input name=$Number type=\"text\" size=\"3\" /> 
      <input name=$PartNumber type=\"text\" size=\"20\" /> 
      <input name=$Description type=\"text\" size=\"35\" /> 
        "); 
      $i++; 
      } 

Где я застрял, получается получить данные в базе данных MySQL. Каждая строка строки должна стать строкой в ​​базе данных. Если бы это была статическая форма, это было бы легко, но с каждым элементом формы, имеющим динамическое имя, я не знаю, как действовать.

+0

Почему имя входа должно быть значением этой части? Для чего еще вы используете этот атрибут имени? – Maxxi

+0

Не могли бы вы перебирать данные POST точно так же, как вы итерации для создания строк формы? – lucasnadalutti

ответ

0

Используйте две таблицы. Создайте таблицу для схемы. Создайте таблицу для деталей и назначьте внешний ключ с идентификатором схемы.

0

Существует лучший способ сделать это.

Дайте всем вашим входам одно и то же имя для данного элемента, добавляя [], чтобы он оказался стороной сервера массива.

Вот пример:

<input name='number[]' .../> 
<input name='part_number[]' .../> 
<input name='description[]' .../> 

Вы можете иметь столько, сколько из них, как вы хотите ...

Затем на стороне сервера просто перебирать их:

for($i=0; $i<count($_POST['number']); $i++){ 
    $row = array(); 
    $row['number'] = $_POST['number'][$i]; 
    $row['part_number'] = $_POST['part_number'][$i]; 
    $row['description'] = $_POST['description'][$i]; 
    //do your mysql insert here. 
} 
Смежные вопросы