从具有相同名称的文本字段提交多个值

时间:2014-11-19 15:35:09

标签: php

我有一个表单,带有两个带有名称属性的文本字段" name"和"金额"

<form method="post" name="form1" id="form1" action="test.php">
<input type="text" name="name" value="wole" size="32" required="required" />
  <input type="text" name="amount" value="100" size="32" required="required" />
  <input type="text" name="name" value="yetunde" size="32" required="required" />
  <input type="text" name="amount" value="200" size="32" required="required" />
</form>

我的目的是根据表单的结构,将两个名称和金额并排分为两行。

我尝试使用此代码段将数据提交到数据库

$sql="INSERT INTO records(name,  amount)VALUES('$_POST[name]', '$_POST[amount]')";

但它只提交一行数据,&#34; wole和100&#34;,我怎样才能确保从表单中捕获两个不同的行

4 个答案:

答案 0 :(得分:3)

根据要求,这是完整的代码。 我添加了一个新字段&#34;得分&#34;向您展示如何添加新字段。

<form method="post" name="form1" id="form1" action="test.php">
  <input type="text" name="studentname[]" value="wole" size="32" required="required" />
  <input type="text" name="course[]" value="100" size="32" required="required" />
  <input type="text" name="score[]" value="100" size="32" required="required" />
  <input type="text" name="studentname[]" value="yetunde" size="32" required="required" />
  <input type="text" name="course[]" value="200" size="32" required="required" />
  <input type="text" name="score[]" value="100" size="32" required="required" />
</form>


<?php
$con=mysqli_connect
("localhost","root","famakin","results");
//Checkconnection
if(mysqli_connect_errno())
{
    echo"FailedtoconnecttoMySQL:".mysqli_connect_error();
}
foreach($_POST['studentname'] as $idx => $studentname) {
    $sql="INSERT INTO records(studentname,  course, score)VALUES('" . $studentname . "', '" . $_POST['course'][$idx] . "', '" . $_POST['score'][$idx] . "')";
    if(!mysqli_query($con,$sql))
    {
        die('Error:'.mysqli_error($con));
    }
}


echo '<META HTTP-EQUIV="Refresh" Content="0; URL=result.php">';
mysqli_close($con);
?>

答案 1 :(得分:2)

您可能希望使用带有表单元素名称的方括号:

<input type="text" name="amount[]" value="100" size="32" required="required" />

在这种情况下,您将在$_POST['amount']中收到一组值,然后您负责正确解析它并插入任意数量的行,例如:用foreach php循环或类似。

答案 2 :(得分:0)

您可以在名称中使用数组表示法

<form method="post" name="form1" id="form1" action="test.php">
<input type="text" name="name[]" value="wole" size="32" required="required" />
  <input type="text" name="amount[]" value="100" size="32" required="required" />
  <input type="text" name="name[]" value="yetunde" size="32" required="required" />
  <input type="text" name="amount[]" value="200" size="32" required="required" />
</form>

在php中你可以得到论文

   $_POST[amount][index_no_here];

最终你可以把它放在循环中以改变每个索引

答案 3 :(得分:0)

正如其他人所说,最好只使用一系列字段。如果它必须是一个字段,您可以通过业务层中的某个分隔符(逗号,分号等)将字符串拆分为数组,然后循环它以在数据库中创建不同的记录。