#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 или что-то еще