Произвольное число полей FORM, готовых для базы данных

Я столкнулся со следующей проблемой: у меня есть форма со случайным числом полей. (Это значит, что пользователи могут вводить имена своих коллег-членов, и для команд не существует установленного размера.) Мне нужно, чтобы эти введенные данные были отформатированы при подготовке к хранению в базе данных.

Структура базы данных прекрасна, она просто получает случайное число $_POST s и помещает их в массив, который является проблемой.

До сих пор у меня есть javascript, который позволяет пользователю создавать / удалять бесконечное количество полей с увеличением id s / name s (например, TeamMemberName1, TeamMemberEmail1, TeamMemberName2, TeamMemberEmail2 и т. Д.).

Прямо сейчас я создал уродливую серию операторов PHP, которые помещают разумное количество данных POST в многомерную матрицу – я не понимаю, почему команда должна быть больше 50, а затем я собирался обрабатывать массив для удаления любых пустых строк перед передачей его в базу данных.

Пример:

  $submittedTeamMembers = array ( "teamMember1" => array ( "name" => $_POST["teamMemberName1"], "email" => $_POST["teamMemberEmail1"]) ); 

Но я предполагаю, что есть лучший способ!

Ваши имена могут быть в форме массива, которые PHP прекрасно понимает. Пример:

 <input type="text" name="teamMembers[0]['name']" /> <input type="text" name="teamMembers[0]['email']" /> 

который PHP будет интерпретировать после публикации, как вы ожидали:

 //print_r($_POST['teamMembers']); Array ( [0] => Array ( [name] => foo [email] => bar ) ) 

Просто дайте всем своим полям имя «TeamMemberName []» или «TeamMemberEmail []». Каждый из них должен быть опубликован независимо от того, есть ли значение, поэтому они должны всегда совпадать.

Это передаст их в виде массива на ваш PHP-скрипт на стороне сервера, чтобы вы могли получить к ним доступ так:

 $teamMemberNames = $_POST["teamMemberName"]; $teamMemberEmails = $_POST["teamMemberEmail"]; for ($i = 0; $i < count($teamMemberNames); $i++) echo "name = {$teamMemberNames[$i]}, email = {$teamMemberEmails[$i]}\n";