0

我有多个表单,我试图将数据插入 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

4 回答 4

1

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

  1. 让不同的表单提交到不同的脚本。因此,您可以insert_user.php为第一种形式insert_winery.php和第二种形式编写脚本。

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

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

  4. 在 action 属性中使用 URL 参数:action="insert.php?form=user"。然后脚本就可以了if ($_GET['form'] == 'user') ...

于 2013-09-17T01:37:28.523 回答
0

我建议为每个表单添加一个隐藏变量以供其操作,然后在以下位置执行 if 语句insert.php

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*" />
于 2013-09-17T01:08:19.257 回答
0

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

在每个表格中都有一个带有表名的隐藏变量......

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

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

INSERT INTO entry VALUES (...)

代替

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

或者您有 if 检查以根据表名设置表达式列表。这是一个维护问题:

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

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

INSERT INTO $tableName $columns VALUES (...)
于 2013-09-17T01:10:33.703 回答
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

    }

  }

?>

也许你明白了。谢谢

于 2015-12-08T18:11:57.143 回答