【问题标题】:How to handle unknown number of items from a form in php如何在php中处理表单中未知数量的项目
【发布时间】:2011-11-15 18:01:36
【问题描述】:

正在为工作制作库存页面。我已经编写了一个页面,它将遍历我的数据库并显示其中的所有项目。

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'];

但这行不通,因为我的帖子数量不详。请写任何你喜欢的代码。我更喜欢文档页面。

【问题讨论】:

    标签: php javascript mysql html dynamic


    【解决方案1】:

    $_POST 只是一个普通的哈希数组,所以你可以遍历它

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

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


    编辑 试了也没用

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

    因为你不知道变量的名字;

    【讨论】:

    • 你能给我一个关于如何将它们转换为数组值的第一个代码段的例子吗?
    • 我想我的问题是,“as $key => $value”是做什么的。什么是 $key,什么是 $value。
    • @user1048138 如果你有一个数组$a = array(); $a['key1'] = 'val1'; $['key2'] = 'val2';,那么带有foreach$key=&gt;$value 的循环将在第一次运行$key = 'key1'$value = 'val1' 在第二次运行$key = 'key2'$value = 'val2'
    • 你不知道你让我有多开心。我在这方面工作的时间最长。
    【解决方案2】:

    我将从你的代码开始

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

    【讨论】:

    • 这将如何工作。 $_POST['id'] 将从第一页(第一个代码)返回名称为 'id' 的任何内容。第二页将只取第一页,因为它没有直接连接到数据库。
    • 没有输入现在像一个数组,所以我使用 foreach 解析它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2023-04-03
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多