Php 提交包含多个同名条目的表单

Php 提交包含多个同名条目的表单,php,html,arrays,post,Php,Html,Arrays,Post,假设表单中的每个条目都有以下字段名: 产品名称 产品许可证 产品版本 我希望能够在一个表单中添加多个产品。我在考虑以下类似的事情,其中尾随整数对应于我数据库中特定产品的ID(这意味着它们不必按顺序排列,也可以是1、3、19): 产品名称1 产品许可证1 产品版本1 产品名称2 产品许可证2 产品版本2 如果我通过POST-方法提交此表单,我(例如)会得到以下结果: $_POST['product_name_1'] = 'computer'; $_POST['product_license

假设表单中的每个条目都有以下字段名:

  • 产品名称
  • 产品许可证
  • 产品版本
我希望能够在一个表单中添加多个产品。我在考虑以下类似的事情,其中尾随整数对应于我数据库中特定产品的ID(这意味着它们不必按顺序排列,也可以是1、3、19):

  • 产品名称1
  • 产品许可证1
  • 产品版本1
  • 产品名称2
  • 产品许可证2
  • 产品版本2
如果我通过
POST
-方法提交此表单,我(例如)会得到以下结果:

$_POST['product_name_1'] = 'computer';
$_POST['product_license_1'] = '$_FA_MySuperCoolLicenseForAComputer';
$_POST['product_version_1'] = 'Computer 1.0';
// And so on...
在正常情况下,我会以数组形式提交条目(包括附加隐藏输入字段中的ID),如本例所示:

<input type='hidden' name='product_id[]' value='1'>
<input type='text' name='product_name[]'>
<input type='text' name='product_license[]'>
<input type='text' name='product_version[]'>
<!-- Repeat for every product in the form -->

<?php
$_POST['product_id'][0]   = '1';
$_POST['product_id'][1]   = '2';
$_POST['product_name'][0] = 'computer';
$_POST['product_name'][1] = 'screen';


您可以在表单提交的基础上创建一个数组,并将其发送给将数据插入数据库的方法

比如:

<input type='text' name='product_name[]'>
<input type='text' name='product_license[]'>
<input type='text' name='product_version[]'>


<?php
//receiving Part 

for($i=0;$i<count($_POST["product_name"]);$i++)
{
    $arr[]["product_id"]=$i;
    $arr[]["product_name_".$id]=$_POST["product_name"][$i];
    $arr[]["product_license_".$id]=$_POST["product_license"][$i];
}

?>


这里的表单中没有产品ID,并且在PHP端进行了计算。

您可以使用简单循环进行迭代

 $array=array();
 for($i=1;$i<$limit;$i++){
  $product=array(
    "product_id"=>$_POST["product_id_".$i];
    "product_anme"=>$_POST["product_name_".$i];
    //etc..
  );
  $array[]=$product;
}
$array=array();
对于($i=1;$i$\u POST[“产品id”..$i];
“产品名称”=>$发布[“产品名称”.$i];
//等等。。
);
$array[]=$product;
}

将_1、_2、_3添加到输入名称/id的末尾。通过javascript按钮添加新产品,该按钮还附加了_2、_3等。提交表单时,还将发送计数器,以便您知道提交了多少产品。然后,使用for循环,从它们中获取数据。@traitac计数器是一个好主意,我还没有想到这一点。然而,这不仅是一个“创建新”表单,也是一个“编辑”表单。因此,很容易出现id不连续的情况(
\u1
\u2
\u8
,…),因此使用从
\u1
\u$count
的循环将无法正常工作。那么。。您希望同时编辑多个产品吗?您只需从数据库中获取产品列表,然后选择要编辑的产品。否?我希望能够同时进行多个编辑。因此,我需要加载所有产品(可能添加一些新产品),对它们进行更改(或不进行更改)并保存这些更改。在你看到并理解它之后给我写信,因为我不会让它持续那么久。单击“Adauga campuri”查看它如何添加更多产品字段。对于编辑现有的页面,只需使用另一个页面或其他内容,不要搞得一团糟;或者至少拆分视图进行添加/编辑。如我在问题中所述,我通常会这样做,但我不能。由于一些奇怪的原因,我使用的系统不允许使用相同名称的多个输入(即使最后有一个
[]
),让我告诉您一件事,您的代码无法接收多个值。您需要使用循环或类似JQUERY或JAVASCRIPT的任何东西多次复制输入字段,以多次获取输入。我编写代码的基础是HTML部分没有问题,并接受了多个输入。我知道您的HTML是正确的,我正在使用Javascript复制这些字段。但这两者都不能改变这样一个事实,即我不能只在名称后面附加一个
[]
。我需要用另一种方式。