PHP многомерный массив из формы HTML - PullRequest
0 голосов
/ 11 июня 2019

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

Моя структура HTML-формы выглядит следующим образом:

<input type="text" name="child[1][name]">
<input type="text" name="child[1][dob]">

Затем у меня отображается таблица для элементов (так как для каждого элемента есть 2 поля), где пользователь может добавлять / удалять строки с помощью Javascript. Пример:

<table>
  <tr>
    <td><input type="text" name="child[1][item][name]"></td>
    <td><input type="text" name="child[1][item][value]"></td>
  </tr>
</table>

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

В моем PHP я ищу что-то вроде:

foreach($_POST['child'] as $child) {

  $child_name = $child['name'];
  $child_dob  = $child['dob'];

  // insert child data to children table

  foreach($_POST['item'] as $item) {

    $item_name  = $item['name'];
    $item_value = $item['value'];

    // insert item data to items table

  }

}

Моя проблема в том, что без элементов дочерний массив выглядит нормально, когда я печатаю_r ($ _ POST ['child']). Однако, когда я включаю элементы в соответствии с моим HTML выше, массив выводит только последний добавленный элемент (есть ли один или несколько). Я не уверен, правильно ли я указываю массив для элементов во входных тегах или как мне тогда обращаться к нему в PHP.

Если у кого-нибудь есть какие-либо предположения о том, где мой синтаксис может быть неправильным, или, если, возможно, я неправильно подхожу к этому, это было бы очень полезно.

1 Ответ

0 голосов
/ 12 июня 2019

понял это.

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

Обновлено до:

<input type="text" name="child[1][item][1][name]">
<input type="text" name="child[1][item][1][value]">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...