Как автозаполнение других полей формы при нажатии на PHP

У меня простая форма прямо сейчас:

<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.presses 2.Нажмите кнопку 3.clicks на кнопке выборки (кнопка выбора не существует сейчас, я хотел бы знать, как ее создать используя javascript или что-нибудь еще, что соответствует моим критериям)

Как только он сделает что-либо из вышеперечисленного, он должен автоматически сгенерировать оставшиеся поля из базы данных. Запрос будет выглядеть так: $ qry = mysql_query ("SELECT * от пользователя, где username = $_POST['username'] "); $ Строка = mysql_fetch_assoc ( '$ QRY); echo $ 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; 

Создайте конечную точку php (в основном URL-адрес, в котором вы можете вызвать специальную функцию php, которая возвращает только нужные вам данные), которая возвращает массив json_encode'd со всеми данными других полей.

Вызовите эту функцию через 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(); }); });