Я столкнулся со следующей проблемой: у меня есть форма со случайным числом полей. (Это значит, что пользователи могут вводить имена своих коллег-членов, и для команд не существует установленного размера.) Мне нужно, чтобы эти введенные данные были отформатированы при подготовке к хранению в базе данных.
Структура базы данных прекрасна, она просто получает случайное число $_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";