-5

id、、、の3つのテキスト入力フィールドを持つHTMLフォームがありnameますcontact。私のDBテーブルには同じ名前の列があり、値はid=1、、name=markですcontact=1234nameここで、htmlフォームのidフィールドに「1」を入力してEnterキーを押すと、フォームの残りのフィールド(: 、など)はどのよう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

Codeigniter、cakephp、yii などの php MVC フレームワークを使用してみてください。

于 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>

アップデート:

あなたの更新について

まず第一に、MySQL 関数の代わりに PDO または MySQLi データベースを使用することをお勧めします。これは、mysql_* が維持されなくなったためです。代わりに PDO を学ぶのは新鮮だからです。

データベースの select ステートメントから単一の行を期待している場合は、使用しないでくださいwhile()。これは、複数の行を持つ mysql オブジェクトをループするために使用されるためです。

email, firstname, lastnameテーブルが正確にそれを配列に直接フェッチしたと仮定した場合:

$myrow = mysql_fetch_assoc($result);

次に、その配列をjsonに変換して出力します

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