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

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

<table>
  <tbody>
    <tr>
      <td>
        <input type="text" class="left-context-field" value="First left value">
      </td>
      <td>
        <input type="text" class="right-context-field" value="First right value">
      </td>
    </tr>
    <tr>
      <td>
        <input type="text" class="left-context-field" value="Second left value">
      </td>
      <td>
        <input type="text" class="right-context-field" value="Second right value">
      </td>
    </tr>
    <tr>
      <td>
        <input type="text" class="left-context-field" value="Third left value">
      </td>
      <td>
        <input type="text" class="right-context-field" value="Third right value">
      </td>
    </tr>
    <tr>
      <td>
        <input type="text" class="left-context-field" value="Fourth left value">
      </td>
      <td>
        <input type="text" class="right-context-field" value="Fourth right value">
      </td>
    </tr>
  </tbody>
</table>

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

Должен ли я обернуть все строки в одну огромную форму, а затем вызвать .serializeArray()? Или одна форма на строку?

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

2 ответа

Решение

Я отредактировал ответ меды, но он не одобряет это редактирование, поэтому я публикую его здесь снова.

В формах HTML способ отправки массивов - использование скобок.

Например

name="values[]"

как это.

<form name = 'vals_form' action = 'php_page.php' method = 'post'>
  <table>
    ... <!-- Your all code -->
    <tr>
      <td>
        <input type="text" class="left-context-field" value="First left value" name="values[]">
      </td>
      <td>
        <input type="text" class="right-context-field" value="First right value" name="values[]">
      </td>
    </tr>
    ...
    <input type = 'submit' value = 'Post Values' />  
  </table>
</form> <!--and close the form tag-->

В PHP вы возвращаете массив

$values = $_POST['values'];

В формах HTML способ отправки массивов - использование скобок.

Например

name="values[]"

как это.

<form name = 'vals_form' action = 'php_page.php' method = 'post'>
  <table>
    ... <!-- Your all code -->
    <tr>
      <td>
        <input type="text" class="left-context-field" value="First left value" name="values[]">
      </td>
      <td>
        <input type="text" class="right-context-field" value="First right value" name="values[]">
      </td>
    </tr>
    ...
    <input type = 'submit' value = 'Post Values' />
  </table>
</form> <!--and close the form tag-->

В PHP вы возвращаете массив

$values = $_POST['values'];
Другие вопросы по тегам