使用数据库中的数据预设表单的值

时间:2013-08-19 17:12:21

标签: php javascript jquery html ajax

我在网页上有一个表单(使用html构建)。假设我有一些可以更改的表单值,因此我将它们存储在数据库中。我想要做的是,每当用户访问表单所在的页面时,必须读取数据库中的数据,并且必须使用该信息填充表单(例如,我有一个字段用于表示邮件,所以我想填写我在数据库中的电子邮件。)

我一直在寻找一种方法来做到这一点,但我还没有找到任何我真正“喜欢”的方法。我能做到的唯一方法是在javascript上对PHP脚本执行AJAX请求,在那里我连接到数据库并获取数据。一旦我得到它,我通过Javascript修改整个表单,但我不确定它是否足够安全。

有关如何以不同方式进行操作或如何安全地进行操作的任何想法?

非常感谢。

3 个答案:

答案 0 :(得分:3)

我的解决方案允许链接任意HTML输入元素和数据库字段。对于您需要的任何情况,此代码可以放入可重用的函数中。

将数据库字段命名为与HTML表单元素的名称属性相同。然后,您将能够执行以下操作:

<!doctype html>
<form>
    <input name="email" />
    <input name="age" />
    <input name="website" />
</form>

在PHP中,将HTML文件的内容读入DomDocument构造函数:

$dom = new DomDocument(file_get_contents("MyPage.html"));

然后你可以获得所有输入元素的DomNodeList,只需:

$xpath = new DomXPath($dom);
$nodeList = $xpath->query("//form/input");

假设您的数据库数据在名为$data的关联数组中表示:

$data = $mysql->query("yourQuery");
foreach($nodeList as $node) {
    $key = $node->getAttribute("name");
    if(array_key_exists($key, $data)) {
        $node->setAttribute("value", $data[$key]);
    }
}

然后,您可以像往常一样通过将DOM输出到浏览器来呈现页面。

BONUS :将表单数据保存到数据库时,由于HTML输入字段的名称与数据库字段名称匹配,因此可以将$ _POST数组传递给DAL。

答案 1 :(得分:0)

我并不完全相信我正在回答正确的问题,但通常为了填写表格,你所要做的就是这样:

<form>
    <input name="username" value="<?php echo isset($dataRow->UserName) ? htmlentities($dataRow->UserName) : ""; ?>">
</form>

我遗漏了一些不重要的事情,但如果这是您第一次使用HTML表单,那么您可能也想阅读这些内容。

当然,您首先需要在该行之前从数据库中获取数据:

$resultSet = mysqli_query($connection, "SELECT * FROM Table WHERE Id = " . ((int)$id));
$dataRow = mysqli_fetch_object($query);

再次:我遗漏了一些东西,假设你可以根据这个例子找到正确的方法。当然,程序样式mysqli_ *函数应该可以替换为面向对象的函数。

使用AJAX似乎毫无意义:无论如何你要求表单,你也可以预先填写它。

至于安全性:我不知道这是怎么回事。只要你在我的代码中转义你的HTML(htmlentities)就应该没事了。

答案 2 :(得分:0)

我会在这里使用JQuery(jquery.com)和JEasyUI(www.jeasyui.com)解决方案,因为我已经安装了这些框架......(听起来你已经安装了JQuery,因为你使用的是AJAX) 。 JEasyUI让这很容易......

  1. 在HTML中,创建表单元素:
    <!doctype html> 
    <form> 
        <input name="email" /> 
        <input name="age" /> 
        <input name="website" />
    </form>
    
  2. 在javascript文件中,以:

    开头
    
    $(document).ready(function(){
    
    });
    
    or
    
    $(function($){
    
    });
    
    
  3. 在main函数中,从JQuery中选择from并创建一个JEasyUI表单组件

    $('form').form();
    
  4. 然后,使用您的数据填充表单(必须是对象):

    $('form').form('load',{
        email:'mymail@gmail.com',
        age:5,
        website:'http://stackoverflow.com'
    });
    
    or
    
    $.ajax({
        url: "getData.php?",
        type: "GET",
        dataType: "json",
        success: function(json_data) {
            $('form').form('load', json_data);
        }
    });
    
  5. 最后你的JS应该是这样的:

    
    $(document).ready(function(){
        $('form').form('load',{
            email:'mymail@gmail.com',
            age:5,
            website:'http://stackoverflow.com'
        });
    });
    
    or
    
    $(function($){
        $.ajax({
            url: "getData.php?",
            type: "GET",
            dataType: "json",
            success: function(json_data) {
                $('form').form('load', json_data);
            }
        });
    });