2016-03-14 1 views
1

У меня есть форма с динамически созданным входом, подобным этому (упрощенное): Я могу создать больше людей с кнопкой ADD PERSON. Для каждого человека я могу добавить больше хобби.Индекс динамического ввода для других динамических массивов ввода

JavaScript:

$(document).ready(function(){ 

    $(".add_person").click(function(){ 
    var new_fieldset = $(".person:first").clone(); 
    $(".person:last").after(new_fieldset); 
    }); 

    $(".add_hobby").click(function(){ 
    var new_input = '<input type="text" name="hobby[]" />'; 
    $("this").closest("fieldset").find("div_hobbies").append(new_input); 
    }); 

}); 

PHP:

<fieldset class="person"> 
<input name="name[]" value=""> 
<div class="div_hobbies"></div> 
<a class="add_hobby">ADD HOBBY</a> 
</fieldset> 

<a class="add_person">ADD PERSON</a> 

Я хотел бы опубликовать результат с помощью метода POST и получить массив, но я не знаю, как индексировать хобби с правильным человеком (какой-то человек может иметь 0 хобби):

Пример я хочу:

John with hobbies "FISHING", "DIVING" 
Carl with no hobbies 
Eddy with hobby "SINGING" 
Paul with hobbies "RUNNING", "DIVING", "CYCLING" 

var_dump ($ _ POST [ "имя"])

array(4) { 
[0] => string "John", 
[1] => string "Carl", 
[2] => string "Eddy", 
[3] => string "Paul) 
} 

Но с var_dump ($ _ POST [ 'хобби']) я получаю один массив как это:

array(6) { 
     [0] => string "FISHING", 
     [1] => string "DIVING", 
     [2] => string "SINGING", 
     [3] => string "RUNNING", 
     [4] => string "DIVING", 
     [5] => string "CYCLING" 
     } 

Как я могу индексировать хобби с правильным человеком?

ответ

1

Это можно сделать, добавив еще немного javascript к вашему коду. Решение состоит в том, чтобы сделать ваше имя поля ввода хобби двумерным массивом.

<input type="text" name="hobby[][]" /> 

Когда вы отправите форму, использовать логику яваскрипта перебрать элементы и сделать первый индекс хобби [] [], как имя человека. Например, после применения JS логики, элементы формы должны быть,

<input type="text" name="hobby[jack][]" /> 
<input type="text" name="hobby[jack][]" /> 
<input type="text" name="hobby[rose][]" /> 
<input type="text" name="hobby[rose][]" /> 

Теперь отправьте форму и на странице PHP, вы получите это как двумерный массив, где ключ первого уровня является именем лица и их хобби внутри.

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