通过html表单保存到MySQL数据库

时间:2012-09-26 20:58:37

标签: php mysql database forms mysqli

我正在创建一个php页面,它从数据库表中检索数据并将其放在一个表中供用户通过MySQLi命令查看。

我想知道如何应对相反的情况。我希望用户能够将信息输入到文本框中,然后单击页面底部名为“保存”的按钮,这将提示用户“确定”,然后再保存到数据库中。如果用户单击“是”,则新条目将插入到数据库中。

我有以下代码来创建标签和文本框:

<FORM>
ID: <input type="text" name="id"><br />
NM: <input type="text" name="nm"><br />
Company: <input type="text" name="company"><br />
Address: <input type="text" name="address"><br />
City: <input type="text" name="city"><br />
Zip: <input type="text" name="zip"><br />
State: <input type="text" name="state"><br />
Phone: <input type="text" name="phone"><br />
Website: <input type="text" name="web_site"><br />
</FORM>

然而,当谈到“保存”按钮时,我可以很好地实现按钮,但是如何保存输入数据库的信息呢?

我最初的思考过程是找到用户输入的值。我是PHP和WEB开发人员的新手,但我需要知道如何在文本框中获取文本的值。我是否必须通过PHP Post方法筛选所有值?

一旦我掌握了用户想要输入的信息,我想也许MySQLi有一个插入功能,我在这里找到http://php.net/manual/en/mysqli.insert-id.php。然后它只是一个快速插入,并且在用户在提示符处给出“是”之后它在数据库中。

我是否有正确的想法?有没有更有效的方法来做到这一点?

非常感谢任何帮助。我一直在寻找类似于与我的场景相关的问题和解决方案,但没有。 =(

谢谢!

编辑:

以下是我在agentprocess.php上的代码,动作表单将信息发送到:

<?php
$agent_nm = $_POST['nm']; // gather all the variables
$company = $_POST['company'];
$address = $_POST['address'];
$city = $_POST['city'];
$zip = $_POST['zip'];
$state = $_POST['state'];
$phone = $_POST['phone'];
$web_site = $_POST['web_site'];
$batch_id = $_POST['batch_id']; // added batch id
//connect
$conn = new mysqli('local', 'admin', 'pass', 'DB');
    if(mysqli_connect_errno()) {
        exit('Connect failed: '. mysqli_connect_error());
    }
//generate the query (doesn't add id because id is autoincremented)
$query = "INSERT INTO t_agent VALUES (NULL, " . $agent_nm . ", " . $company . ", " . $address . ", " . $city . ", " . $zip . ", " . $state . ", " . $phone . ", " . $web_site . ", " . $batch_id . ")";

//insert and close.
mysqli_query($conn, $query);
mysqli_close($conn);

尽管这里有代码,但我已经查询了表格并且新条目不存在。我在这里错过了什么吗?

提前致谢!

4 个答案:

答案 0 :(得分:1)

您需要使用forms。是的,使用元素中的name属性,您需要筛选$_POST(例如$_POST['company'])以获取要存储到数据库中的值。这是一个example。使用MYSQLi语句而不是像例如。

中的mysql

答案 1 :(得分:1)

非常简单的示例,将标签标签添加到输入的标签中并将其放在表单中。

<form method="post" action="process.php" id="myForm" name="myForm" >
<label for="ID">ID</label>:  <input type="text" name="ID" /><br />
<label for="nm">NM:</label> <input type="text" name="nm"><br />
<label for="company">Company:</label> <input type="text" name="company"><br />
<label for="address">Address:</label> <input type="text" name="address"><br />
<label for="city">City</label>: <input type="text" name="city"><br />
<label for="zip">Zip</label>: <input type="text" name="zip"><br />
<label for="state">State</label>: <input type="text" name="state"><br />
<label for="phone">Phone</label>: <input type="text" name="phone"><br />
<label for="web_site">Website</label>: <input type="text" name="web_site"><br />
<input type="submit" name="submit" />// this is your submit button
</form>

在process.php页面上

//get your inputs from the form
$ID = $_POST['ID']; 
//do the same for each of the text inputs

然后你可以使用你所描述的mysqli将值插入到你的数据库中,如果你需要有关问题的mysqli部分的任何帮助,请随时发表评论,我没有在此处包含它,因为你已经发布了链接原来的问题。

答案 2 :(得分:1)

对于Web开发人员来说,这是一项简单而又复杂的任务。

所以我将给你一个你需要做的完整例子......

要执行SAVE按钮检查,最快的方法是使用javascript确认对话框,如果确认也使用javascript提交表单。

Mysql插入部分很简单,您需要检查是否有通过$ _REQUSET中的表单提交的数据(这比$ _POST或$ _GET更好,因为它可以捕获它们。)然后连接到db和做一个插入查询...

此示例中解释了所有内容:

http://pastebin.com/thNmsXvn

但是请使用像Smarty这样的模板引擎,因为在没有模板的情况下在一个文件中执行php,javascript和html非常糟糕,长期只会给你带来问题。

我认为我在使用pastebin的例子中非常清楚但是如果你有一些问题可以随意问...

添加,我已经从HTML表单中删除了ID,因为在MySQL中管理ID的最佳解决方案是自动增量选项,您可以在创建表并将其设置为特定字段时进行配置。通常它是ID,它必须是整数。

答案 3 :(得分:1)

你应该使用PHP / MySQL的PDO函数

id字段应为autoincrement

<?php
$host= "xxx";
$username="xxx";
$password="xxx";
$database="xxx ";

// Gets data from URL parameters

$name = $_POST['nm'];
//Repeate for all other parameters

// Opens a connection to a MySQL server
try {

// DBH means "DB Handle"

// MySQL with PDO_MYSQL
 $DBH = new PDO("mysql:host=$host;dbname=$database", $username, $password);

}
catch(PDOException $e) {
    echo $e->getMessage();
}
// STH means "Statement Handle"
$STH = $DBH->prepare("INSERT INTO mytable ( id,    nm,company,address,city,zip,state,phone,web_site ) values ( NULL,:nm,:company,:address,:city,:zip,:state,:phone,:web_site)");
$STH->bindParam(':name', $name);
//Repeate for all other parameters
$STH->execute();

//# close the connection
$DBH = null;
?>