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
- 产品名称
- 产品许可证
- 产品版本
- 产品名称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复制这些字段。但这两者都不能改变这样一个事实,即我不能只在名称后面附加一个[]
。我需要用另一种方式。