Как обработать неизвестное количество элементов из формы в php - PullRequest
2 голосов
/ 15 ноября 2011

Работаем над оформлением страницы инвентаря для работы. Я написал страницу, которая будет проходить по моей базе данных и отображать все элементы там.

include 'auth.php'; //to change login, please authenticate 
$sql="SELECT * FROM `inventory` ORDER BY `id` asc;";
$result=mysql_query($sql);
while($rows = mysql_fetch_array($result)){
echo    $rows["name"];
<input type="text" name="<? echo $rows["id"];  ?>" id="<? echo $rows["id"] ?>" placeholder="Who will go in here?" />
}

Приведенный выше код делает то, что я хочу. Я хотел бы поместить это в форму и иметь кнопку отправки. Допустим, форма

<form method="POST" action="page.php">

Теперь я хочу написать page.php, чтобы он мог обрабатывать все данные независимо от количества элементов. В прошлом я сделал следующее

$fname=$_POST['fname'];
$lname=$_POST['lname'];
$phone=$_POST['phonenum'];
$email = $_POST['email'];
$age = $_POST['b18'];

Но это не сработает, так как у меня будет неизвестное количество постов. Пожалуйста, напишите любой код, который вам нравится. Я предпочитаю страницы документа.

Ответы [ 2 ]

5 голосов
/ 15 ноября 2011

$ _ POST - это обычный хеш-массив, поэтому вы можете зацикливаться на нем

foreach ($_POST as $key => $value) {
  print "{$key}: {$value}<br />";
}

edit
ну, вам нужно сделать некоторые специальные корректировки, если ваши значения являются значениями массива (POST-ключ с [] в конце имени)


редактировать бесполезно, если вы попытаетесь

foreach ($_POST as $varname => $value) {
  ${$varname} = $value;
}

, потому что вы не знаете имя переменных;

0 голосов
/ 15 ноября 2011

Я начну с вашего кода

include 'auth.php'; //to change login, please authenticate 
 $sql="SELECT * FROM `inventory` ORDER BY `id` asc;";
$result=mysql_query($sql);
while($rows = mysql_fetch_array($result)){
echo    $rows["name"];
<input type="text" name="id[]" id="<? echo $rows["id"] ?>" value = "<? echo $rows["id"] ?>"      placeholder="Who will go in here?" />
}

Теперь в вашей page.php

<?php 
foreach($_POST['id'] as $id):
  echo $id; 
endforeach;
?>

Это распечатает все значения ввода с именем id [] Что я сделалпотому что вы называете ввод массивом в конце, а затем печатаете этот массив, я надеюсь, что это то, что вы хотите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...