提交包含多个具有相同名称的条目的表单

时间:2014-09-05 09:17:33

标签: php html arrays post

考虑表单中的每个条目都有以下字段名称:

  • PRODUCT_NAME
  • product_license
  • PRODUCT_VERSION

我想在一个表单中添加多个产品。我正在考虑以下内容,其中尾随整数对应于我的数据库中特定产品的ID(这意味着它们不必按顺序排列。它也可能是 1, 3,19 ):

  • PRODUCT_NAME_1
  • product_license_1
  • product_version_1
  • PRODUCT_NAME_2
  • product_license_2
  • product_version_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';

然而,这对我来说可能不要问为什么。

我的问题是:我是否能够遍历每个元素,以便我可以立即将所有产品保存在我的数据库中?我总是需要条目的ID加上其他所有字段。我怎么能找回它们?

这可能很容易,我现在看起来太愚蠢了。我希望你能证明我是对的;)

2 个答案:

答案 0 :(得分:1)

你可以用简单的循环

进行迭代
 $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;
}

答案 1 :(得分:-1)

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

喜欢的东西:

<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端计算。