使用MySQL将多个表单中的数据插入多个表中

时间:2013-09-17 01:02:51

标签: php mysql forms insert

我有多个表单,我试图将数据插入MySql。每个表单都有一个与该信息相关联的不同表。我使用insert.php文件来插入数据。第一种形式效果很好。但是,当我向初始文件添加任何其他变量时,它会出错。这是我的插入文件:

<?php # NAME OF PROGRAM GOES HERE

require_once 'config.php'; 

// Get values from form
$Fname        = $_POST['first_name'];
$email        = $_POST['email']; 

// Insert data into mysql
$sql="INSERT INTO entry (first_name, email)
VALUES ('$Fname', '$email')";
$result = mysql_query($sql);

// if successfully insert data into database, displays message "Successful".
if($result){
echo "Successful Entry";
}
else {
echo "ERROR";
}
mysql_close();
?> 

这是第一种形式:

<form action="insert.php" method="post" name="admin" onSubmit="return validateForm()">
<p>Please enter First Name <input type="text" name="first_name" required="required"/>
<p>Please enter your Email<input type="text" name="email" required="required" ><br />
<input type="submit" name="submit" value="Submit" />
</form>

第二种形式是:

<form action="insert.php" method="post" onSubmit="return validateForm()">
<p>Favorite Winery Name <input type="text" name="fav_winery" /> <br />
<p>Favorite White Wine<input type="type" name="fav_white" /> <br />
<p>Favorite Red Wine <input type="type" name="fav_red" /> <br /><br />
<input type="submit" name="submit" value="Submit" />
</form>

如何将第二种表单中的信息插入已创建的另一个表中?

4 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。

  1. 让不同的表单提交给不同的脚本。因此,您可以为第一个表单添加insert_user.php脚本,为第二个表单添加insert_winery.php

  2. 使用隐藏的输入字段来区分表格,如Ahouri Ghotbi的答案。

  3. 使用submit字段的值来区分它们。所以你的脚本可以if ($_POST['submit'] == 'user') ...

  4. 在操作属性中使用网址参数:action="insert.php?form=user"。然后,该脚本可以if ($_GET['form'] == 'user') ...

答案 1 :(得分:0)

我建议为每个表单添加一个隐藏变量,然后在insert.php中执行if语句:

if($_GET['action'] == 'insertName'){

##insert code and form validation goes here

}elseif($_GET['action'] == 'insertFav'){

##insert code and form validation goes here

}

并向表单中添加隐藏的输入将ACTION-NAME更改为区分表单的内容

<input type="hidden" name="action" value="insert*ACTION-NAME*" />

答案 2 :(得分:0)

  

如何将第二种表单中的信息插入已创建的另一个表中?

每个表单中都有一个隐藏变量,表名为...

<input type="hidden" id+"tableName" value="entry" />

您的PHP脚本需要足够聪明才能知道每个表所期望的内容。您要么不在INSERT语句的左侧指定表达式列表:

INSERT INTO entry VALUES (...)

而不是

INSERT INTO entry (col1, col2) VALUES (...)

或者,如果检查是根据表名设置表达式列表。这是一个维护问题:

if($tableName == "entry")
{
    $columns = "(first_name, email)";
}

然后在插入查询中使用$ columns:

INSERT INTO $tableName $columns VALUES (...)

答案 3 :(得分:0)

您需要做的就是在处理表单之前在每个表单中使用一个唯一的隐藏字段。

例如:

 <form action="process.php" method="post">

  <input type="hidden" name="formType" value="1">

  <!-- Other input items here -->

  <input type="submit" value="Submit">

</form>

<form action="process.php" method="post">

  <input type="hidden" name="formType" value="2">

  <!-- Other input items here -->

  <input type="submit" value="Submit">

</form>

现在要处理多个表单,您可以在process.php中执行以下操作:

<?php

  if (isset($_POST['submit'])) {

    if ($_POST['formType'] == 1) {

      // Processing for form 1

    } else if ($_POST['formType'] == 2) {

      // Processing for form 2

    }

  }

?>

也许你明白了。 感谢