За последние 24 часа нас посетили 63990 программистов и 1740 роботов. Сейчас ищет 841 программист ...

передать массив данных

Тема в разделе "Прочие вопросы по PHP", создана пользователем vikrorpert, 20 ноя 2014.

  1. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    ниже описывает сферический пример в вакууме
    есть класс user с полями имя, фамилия
    аяксом отправить данные не могу, хотя самый логичный вариант
    форма с типом multipart/form-data
    Код (Text):
    1. <div class="item">
    2.         <input name="User[name]"  type="text">
    3.         <input name="User[surname]"  type="text">
    4.     </div>
    на клиенте форма клонируется и динамически добавляется, можно добавить кучу сотрудников
    проблема в том что имя и фамилия приходят на сервер не связанные между собой
    как проще всего сделать?
    уверен что есть простое решение , делаю такую задачу впервые и не могу понять как проще
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    UserName[] / UserSurname[] пробовали?
     
  3. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    не совсем понял что с этим делать
     
  4. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    счас вижу решение перед сабмитом перебрать все итемы $('.item') в цикле и добавить доп. скрытые поля такого формата
    Код (Text):
    1.  
    2. <hidden name='user[name][1]' value=''>
    3. <hidden name='user[surname][1]' value=''>
    4.  
    5. <hidden name='user[name][2]' value=''>
    6. <hidden name='user[surname][2]' value=''>
     
  5. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Что за тег hidden? Тебе Ganzal правильно подсказал:

    Код (PHP):
    1. <pre>
    2. <?php
    3.     var_dump($_POST);
    4. ?>
    5. </pre>
    6. <form method="post" action="?">
    7. <input type="hidden" name='user[][name]' value='1'>
    8. <input type="hidden" name='user[][surname]' value='2'>
    9.  
    10. <input type="hidden" name='user[][name]' value='3'>
    11. <input type="hidden" name='user[][surname]' value='4'>
    12.  
    13. <input type="submit">
    14. </form>
    15.  
    16. Результат:
    17. array(1) {
    18.   ["user"]=>
    19.   array(4) {
    20.     [0]=>
    21.     array(1) {
    22.       ["name"]=>
    23.       string(1) "1"
    24.     }
    25.     [1]=>
    26.     array(1) {
    27.       ["surname"]=>
    28.       string(1) "2"
    29.     }
    30.     [2]=>
    31.     array(1) {
    32.       ["name"]=>
    33.       string(1) "3"
    34.     }
    35.     [3]=>
    36.     array(1) {
    37.       ["surname"]=>
    38.       string(1) "4"
    39.     }
    40.   }
    41. }
     
  6. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    тег хидден это скрытое поле

    Код (Text):
    1.  
    2. array(1) {
    3.   ["user"]=>
    4.   array(4) {
    5.     [0]=>
    6.     array(1) {
    7.       ["name"]=>
    8.       string(1) "1"
    9.     }
    10.     [1]=>
    11.     array(1) {
    12.       ["surname"]=>
    13.       string(1) "2"
    14.     }
    15.     [2]=>
    16.     array(1) {
    17.       ["name"]=>
    18.       string(1) "3"
    19.     }
    20.     [3]=>
    21.     array(1) {
    22.       ["surname"]=>
    23.       string(1) "4"
    24.     }
    25.   }
    26. }
    а не глупо ли так делать?
    получается на сервере в цикле надо делать проход
    Код (Text):
    1. for ($i=0; $i<count($_POST);$i+=2){
    2.     $user->name=$_POST[$i];
    3.     $user->surname=$_POST[$i+1];
    4. }
    а где гарантия что порядок отправки не нарушится?
     
  7. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Глупо говорить что есть тег hidden.
    Если нужна гарантия, то используй javascript и отправляй в одной строке.
    получается так $i+=2
     
  8. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    Какой порядок?
    У него многомерные массивы летят и в них есть уже конкретные данные для записи.
    Берем только значения массива array_values получаем массивы данных name,surname.
    Через javascript спокойно отправляется.
     
  9. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    гарантия того что данные не придут в таком виде

    Код (Text):
    1.  
    2. array(1) {
    3.   ["user"]=>
    4.   array(4) {
    5.     [0]=>
    6.     array(1) {
    7.       ["name"]=>
    8.       string(1) "1"
    9.     }
    10.     [1]=>
    11.     array(1) {
    12.       ["name"]=>
    13.       string(1) "2"
    14.     }
    15.     [2]=>
    16.     array(1) {
    17.       ["surname"]=>
    18.       string(1) "3"
    19.     }
    20.     [3]=>
    21.     array(1) {
    22.       ["surname"]=>
    23.       string(1) "4"
    24.     }
    25.   }
    26. }
     
  10. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Гарантия что у тебя всё правильно организовано, ты сам себе вредить будешь или может ты не всю задачу описал?
     
  11. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    задачу описал максимально точно, учитывая что это сферический пример
    счас склоняюсь к такому решению- перед сабмитом генерировать скрытые поля и явно задать им индекс
    Код (Text):
    1.  
    2. <form method="post" action="?">
    3. <input type="hidden" name='user[0][name]' value='1'>
    4. <input type="hidden" name='user[0][surname]' value='2'>
    5.  
    6. <input type="hidden" name='user[1][name]' value='3'>
    7. <input type="hidden" name='user[1][surname]' value='4'>
    8.  
    9. <input type="submit">
    10. </form>
     
  12. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Это тоже нормальный вариант
     
  13. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
    Проще тогда разделить на 2 и отправлять.
    name[]
    surname[]
    А потом сливать если потребуется в один.
    И не парить себе мозги, порядки еще какие то придумываете.
     
  14. deblogger

    deblogger Новичок

    С нами с:
    11 июл 2013
    Сообщения:
    200
    Симпатии:
    0
    Нет такой проблемы, они связаны через namespace User.

    Смотря какой дебильности js-script, но все равно можно найти место где он профтыкает эти спейсы и добавить им индекс User1, User2, User100500