ниже описывает сферический пример в вакууме есть класс user с полями имя, фамилия аяксом отправить данные не могу, хотя самый логичный вариант форма с типом multipart/form-data Код (Text): <div class="item"> <input name="User[name]" type="text"> <input name="User[surname]" type="text"> </div> на клиенте форма клонируется и динамически добавляется, можно добавить кучу сотрудников проблема в том что имя и фамилия приходят на сервер не связанные между собой как проще всего сделать? уверен что есть простое решение , делаю такую задачу впервые и не могу понять как проще
счас вижу решение перед сабмитом перебрать все итемы $('.item') в цикле и добавить доп. скрытые поля такого формата Код (Text): <hidden name='user[name][1]' value=''> <hidden name='user[surname][1]' value=''> <hidden name='user[name][2]' value=''> <hidden name='user[surname][2]' value=''>
Что за тег hidden? Тебе Ganzal правильно подсказал: Код (PHP): <pre> <?php var_dump($_POST); ?> </pre> <form method="post" action="?"> <input type="hidden" name='user[][name]' value='1'> <input type="hidden" name='user[][surname]' value='2'> <input type="hidden" name='user[][name]' value='3'> <input type="hidden" name='user[][surname]' value='4'> <input type="submit"> </form> Результат: array(1) { ["user"]=> array(4) { [0]=> array(1) { ["name"]=> string(1) "1" } [1]=> array(1) { ["surname"]=> string(1) "2" } [2]=> array(1) { ["name"]=> string(1) "3" } [3]=> array(1) { ["surname"]=> string(1) "4" } } }
тег хидден это скрытое поле Код (Text): array(1) { ["user"]=> array(4) { [0]=> array(1) { ["name"]=> string(1) "1" } [1]=> array(1) { ["surname"]=> string(1) "2" } [2]=> array(1) { ["name"]=> string(1) "3" } [3]=> array(1) { ["surname"]=> string(1) "4" } } } а не глупо ли так делать? получается на сервере в цикле надо делать проход Код (Text): for ($i=0; $i<count($_POST);$i+=2){ $user->name=$_POST[$i]; $user->surname=$_POST[$i+1]; } а где гарантия что порядок отправки не нарушится?
Глупо говорить что есть тег hidden. Если нужна гарантия, то используй javascript и отправляй в одной строке. получается так $i+=2
Какой порядок? У него многомерные массивы летят и в них есть уже конкретные данные для записи. Берем только значения массива array_values получаем массивы данных name,surname. Через javascript спокойно отправляется.
гарантия того что данные не придут в таком виде Код (Text): array(1) { ["user"]=> array(4) { [0]=> array(1) { ["name"]=> string(1) "1" } [1]=> array(1) { ["name"]=> string(1) "2" } [2]=> array(1) { ["surname"]=> string(1) "3" } [3]=> array(1) { ["surname"]=> string(1) "4" } } }
Гарантия что у тебя всё правильно организовано, ты сам себе вредить будешь или может ты не всю задачу описал?
задачу описал максимально точно, учитывая что это сферический пример счас склоняюсь к такому решению- перед сабмитом генерировать скрытые поля и явно задать им индекс Код (Text): <form method="post" action="?"> <input type="hidden" name='user[0][name]' value='1'> <input type="hidden" name='user[0][surname]' value='2'> <input type="hidden" name='user[1][name]' value='3'> <input type="hidden" name='user[1][surname]' value='4'> <input type="submit"> </form>
Проще тогда разделить на 2 и отправлять. name[] surname[] А потом сливать если потребуется в один. И не парить себе мозги, порядки еще какие то придумываете.
Нет такой проблемы, они связаны через namespace User. Смотря какой дебильности js-script, но все равно можно найти место где он профтыкает эти спейсы и добавить им индекс User1, User2, User100500