如何处理php中表单中未知数量的项目

时间:2011-11-15 18:01:36

标签: php javascript mysql html dynamic

制作工作清单页面。我写了一个页面,它将遍历我的数据库并显示其中的所有项目。

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 个答案:

答案 0 :(得分:5)

$ _ POST只是一个普通的哈希数组,所以你可以循环它

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

编辑
如果您的值是数组值(名称末尾带有[]的POST键),则需要进行一些特殊调整


编辑 如果你试试

是没用的
foreach ($_POST as $varname => $value) {
  ${$varname} = $value;
}

因为您不知道变量的名称;

答案 1 :(得分:0)

我将从你的代码开始

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 []的输入的所有值 我为你做的是在最后用数组命名输入,然后打印该数组 我希望这就是你想要的东西