3

私は今簡単なフォームを持っています:

<form action='<? echo $PHP_SELF;?>' method='POST'>
Username:<input type='text' name='username'><br>
Email:<input type='text' name='email'><br>
Posts:<input type='text' name='posts'><br>
Joindate<input type='text' name='join'><br>
<input type="submit" value="Submit" />

私が必要としているのは、ユーザーがユーザー名を入力して次のいずれかを実行したときです。1。タブを押す2.Enterキーを押す3.フェッチボタンをクリックする(フェッチボタンは現在存在しません。作成方法を知りたいです) javascriptまたは私の基準に合う他のものを使用する)

上記のいずれかを実行すると、データベースから残りのフィールドが自動的に生成されます。クエリは次のようになります。$qry= mysql_query( "SELECT * from user where username = $_POST['username']"); $ row = mysql_fetch_assoc('$ qry); $row['posts]などをエコーし​​ます。

自動生成された後、彼はフィールドを編集し、データベースフィールドを更新するために送信できます。

これが私の更新されたコードです:

<head>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css">

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>

</head>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>"  method="POST">
<fieldset>
<legend>Form</legend>
<label for="username">Username: </label>

<input type="text" id="username"  name="username" /> 
<button onclick="myrequest()">fetch</button>
<label for="posts">Posts: </label>
<input type="text" id="posts" name="posts"  size="20"/>
<label for="joindate">Joindate: </label>
<input type="text" id="joindate" name="joindate"  size="20"/>



<p><input type="submit" name="submitBtn" value="Submit" /></p>

</fieldset>
</form>
<script type="javascript/text>
function myrequest() {
var name = $('.username').val();
$.ajax({
  method: "GET",
  url: "http://url.com/test/autofill.php",
  dataType: 'json',
  data: {
    username: username
  }).success(function( responseObject ) {
    // assuming you have an array of stuff like name, id, email, etc.
    // now i populate another field from the ajax response
    $('.posts').val( responseObject.posts );
  });

} 
And then in the autofill.php

    //connect to database
    $name = $_GET['username'];
    $return = mysql_query("SELECT * FROM user WHERE username = '$name' LIMIT 1");
    $rows = mysql_fetch_array($return);
    $formattedData = json_encode($rows);
    print $formattedData;
4

1 に答える 1

3

他のすべてのフィールドの情報を含むjson_encodeされた配列を返すphpエンドポイント(基本的には、必要なデータのみを返す特別なphp関数を呼び出すことができるURL)を作成します。

好みに応じて、最初のフィールドがフォーカスを失うか変更する(またはボタンが押される)ときに、ajaxを介してその関数を呼び出します。

次に、javascriptを使用して、ajax応答から取得したものを使用して、他のフィールドに入力します。

autoFill.php

$name = $_GET['name'];
$return = mysql_query("SELECT * FROM someTable WHERE username = '$name' LIMIT 1");
$rows = mysql_fetch_array($return);
$formattedData = json_encode($rows);
print $formattedData;

Javascript(jqueryを使用) //最初のフィールドからvalを取得します

$(document).ready(function() {
    function myrequest(e) {
        var name = $('.username').val();
        $.ajax({
            method: "GET",
            url: "/echo/json/", /* online, change this to your real url */
            data: {
                username: name
            },
            success: function( responseObject ) {
                alert('success');
                $('#posts').val( 'posts' );
                $('#joindate').val('testing join date');
                /*
                once you've gotten your ajax to work, then go through and replace these dummy vals with responseObject.whatever
                */
            },
            failure: function() {
                alert('fail');
            }
        });
    }

    $('#fetchFields').click(function(e) {
        e.preventDefault();
        myrequest();
    });
});
于 2012-01-25T17:26:32.973 に答える