如何使用数据库中的数据预填充Web表单

时间:2014-03-24 16:41:37

标签: php mysql forms

我有一个表格(实际上是连续4个页面上的4种不同形式,但效果相同),用户填写这些表格以注册网站。表单中有许多(100+)项,包括文本框,范围,但主要是复选框。

用户注册后,我希望他们能够通过简单的“编辑”来编辑自己的偏好设置。链接在他们的自定义主页上。我的想法是,他们只会再次显示注册表单,但这次他们将使用链接到我的数据库中的用户帐户的数据进行预先填充。

这是否像编辑'一样简单?包含POST值的链接,以传递给表单页面:

http://www.mysite.com/something.php?edit=true

然后在表单页面的php中检查此值,并在编辑为true时设置每个表单项中的值?

我对此进行双重检查的原因是因为看起来很多代码需要遍历表单中的每个项目并将其值设置为数据库中的任何内容而我不想这样做只是为了以后查找这样做有一个更快,更少编程的方式!

如果它有助于找到替代解决方案,我使用PDO,通过包含其(唯一)电子邮件地址的会话变量来识别用户,并且表单名称与数据库列名称相同。

2 个答案:

答案 0 :(得分:0)

您想要访问表单页面上的数据库数据,而不是之前,并通过POST或GET提交。

此外,如果您有这么多字段,您可能不希望它们全部用HTML进行硬编码,而是使用包含用于创建表单的所有字段和设置的多维数组。这也将使表格填充已经归属于当前用户的数据更加容易。

答案 1 :(得分:0)

我会将表单放在一个单独的php文件中,以便它可以被不同的php脚本重用。

在这个单独的php文件中,我将输入值设置为POST变量 即(对于这个例子,我们将调用此文件myform.php)

<form action="<?php echo htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES); ?>" method="POST">
    <input type="text" name="first_name" value="<?php echo @$_POST['first_name']; ?>" >
    <input type="text" name="last_name" value="<?php echo @$_POST['last_name']; ?>" >
    <input type="text" name="username" value="<?php echo @$_POST['username']; ?>" >
    <input type="submit" name="submit" value="<?php echo $submit_value; ?>" >
</form>

然后在编辑页面的PHP端(这假设您的数据库字段与您的输入字段名称匹配)

<?php
foreach($db_row_fields as $field_key => $field_value)
{
     $_POST[$field_key] = $field_value;
}

$submit_value = "Update";

include 'myform.php';

显然只能从数据库中获取所需的字段。


对于您的注册,您只需要设置$ submit_value,因为您希望POST变量为空

$submit_value = "Sign Up";

include 'myform.php';

当您使用两个不同的PHP脚本来处理注册和编辑时,还可以使验证和表单处理代码尽可能重用。