необходимо идентифицировать динамический ввод / текстовые области при вставке в базу данных

#php #jquery #html

#php #jquery #HTML

Вопрос:

У меня есть форма, которая позволяет пользователю динамически добавлять дополнительные входные данные и текстовые области.

Поскольку будет несколько наборов каждого из них, я не могу просто захватить все данные, размещенные в массиве входных данных.

Мне нужно идентифицировать каждую вещь, потому что каждый ввод связан друг с другом.

Поскольку у меня нет установленного количества полей, я не могу предвидеть, что к чему относится.

вот краткое видео, показывающее, что будет делать форма: http://www.screenr.com/lxe

После того, как пользователь введет свою информацию при отправке, я буду использовать php для сбора всех размещенных данных (немного не уверен, как я это сделаю, потому что я не могу идентифицировать каждый набор результатов и его меры).

У меня есть 2 таблицы, результат, мера, ниже вы увидите, как я буду соотносить каждую меру с ее результатом.

итоговая таблица: outcome.id, результат.описание

таблица измерений: measure.id , measure.description, measure.outcome_id

Приветствуется любая помощь.

Ответ №1:

Вам нужно будет вручную управлять индексами вашего массива в Javascript. Но, похоже, вам нужно только подсчитать идентификаторы результатов, поэтому:

 var outcome_num = 0;

$("button.addoutcome").click(function(){
     $("form").append("<input name='outcome["   outcome_num   "]' ...>")
});
  

И список мер будет содержать outcome_num аналогично, но дополнительно сам будет массивом:

 .append("<input name='measure["   outcome_num   "][]' ...>");
  

Таким образом, вы получаете:

  <input name='outcome[1]' ...>
     <input name='measure[1][]' ...>
     <input name='measure[1][]' ...>
     <input name='measure[1][]' ...>

 <input name='outcome[2]' ...>
     <input name='measure[2][]' ...>
     <input name='measure[2][]' ...>
  

Таким образом, вы получите данные в удобном ассоциативном формате. Просто выполните цикл над $_REQUEST["outcome"][$i] и $_REQUEST["measure"][$i][$x] подмассивом.

Если для каждого элемента измерения требуются дополнительные поля _description, то вам также придется вручную их подсчитывать. В этом случае было бы лучше воспроизвести всю структуру массива в Javascript, чтобы отслеживать существующие индикаторы. Больше работы по извлечению номера индекса из существующих полей формы — выполнимо с помощью регулярных выражений, но больше работы, поэтому я бы предпочел здесь ручные счетчики. В вашем случае это кажется выполнимым, если я чего-то не упускаю.

Комментарии:

1. Ваше объяснение, я думаю, верно, я попробую.

Ответ №2:

Я бы предложил называть их массивами

примером может быть что-то вроде этого

     <input name="outcome[i]" type="text" />
    <input name="outcome[i][measure][]" type="text" />
  

где i — это число, которое вы определяете при добавлении элементов

затем в вашем php вы можете проанализировать их в цикле for или что-то еще