Как бороться со многими полями ввода с одинаковыми именами и публиковать в 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'];