-5

我有一个 HTML 表单,它有 3 个文本输入字段:idnamecontact. 我的数据库表具有相同的命名列,值为id=1, name=mark& contact=1234。现在,如果我在我的 html 表单的 id 字段中输入“1”并按回车,那么表单字段的其余部分(如:name、、contact)将如何自动填充?

到目前为止我所做的是:

我的index.html文件(我认为它是错误的,因为我之前没有使用过 JSON):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type = javascript>

$("#email").bind("change", function(e){
  $.getJSON("lookup.php?email=" + $("#email").val(),
        function(data){
          $.each(data, function(i,item){
            if (item.field == "first_name") {
              $("#first_name").val(item.value);
            } else if (item.field == "last_name") {
              $("#last_name").val(item.value);
            }
          });
        });
});


</script>>
</head>

<body>
<form>
<input  type="text" name="email" id="email" />
<input type="text" name="first_name" id="first_name" />
<input type="text" name="last_name" id="last_name" />

</form>
</body>
</html>

我的lookup.php文件:

<?php
//look up the record based on email and get the firstname and lastname
$email=$_GET['$email'];

$con = mysql_connect("localhost", "root", "");
if (!$con) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("json", $con); //DB name= json

 mysql_select_db("json"); //DB name= json

  $result = mysql_query("SELECT * FROM json1 
     WHERE email LIKE '$email%'");      //DB table name=json1
if (mysql_num_rows($result) == 1) {
        while ($myrow = mysql_fetch_array($result)) {
//build the JSON array for return
$json = array(array('field' => 'first_name', 
                    'value' => $firstName), 
              array('field' => 'last_name', 
                    'value' => $last_name));
echo json_encode($json );
        }
}
?>
4

2 回答 2

1

尝试使用一些 php MVC 框架,例如 Codeigniter、cakephp、yii。

于 2012-11-10T18:19:39.943 回答
1

要在不重新加载页面的情况下填写表单,您将不得不使用 Ajax 从服务器(数据库)请求数据,然后使用 javascript 填写,我建议阅读有关使用 jquery 的 ajax 函数的信息。

例如,如果您想填写 id 并单击按钮,页面将重新加载数据,请使用 php post 方法,一个简单的示例:

<?php
    if($_POST['getdata']){
        $id = $_POST['itemID'];
        /*
        connect to the database and get the data here and return in with an array called $data for example
        */
    }
    if($_POST['savedata']){
        /*
        use this if you want to do another action to the form, update the values for example
        */
    }
?>
<form action='' method='POST'>
    <input name="id" value="<?php echo $data['id'];?>" type="text" />
    <input name="name" value="<?php echo $data['name'];?>" type="text" />
    <input name="contact" value="<?php echo $data['contact'];?>" type="text" />
    <input name="getdata" value="Get Data" type="submit" />
    <input name="savedata" value="Save Data" type="submit" />
</form>

更新:

关于你的更新

首先,您最好使用 PDO 或 MySQLi 数据库而不是 MySQL 函数,因为不再维护 mysql_* ,因为您对 php 不熟悉,而是改为学习 PDO。

对于您的代码,如果您希望数据库选择语句中有一行,则不应使用while()它,因为它用于循环遍历具有多行的 mysql 对象。

如果我们假设您的表已将email, firstname, lastname其直接提取到数组中:

$myrow = mysql_fetch_assoc($result);

然后将该数组转换为json并打印出来

echo json_encode($myrow);
exit();
于 2012-11-10T18:21:51.833 回答