Reputation: 237
html
<input type="text" name="PName" />
<input type="text" name="PAddress" />
<input type="text" name="PCity" />
mysql table
________________________________________________________
| id |PName | PAddress | PCity |
| ----|-------------------------------------------------|
| 1 | John | po box no xyz | Florida |
?????????????????????????????????????????????????????????
now my question is how do i use ajax to fetch the address and city when i enter the name? any help is appreciated
Upvotes: 0
Views: 3043
Reputation: 1443
A while ago, i did a "live" search for my project, so here is some code modified for your needs (i assume you have jQuery on your page).
First of all i suggest you give your inputs some id's:
<input type="text" name="PName" id="PName" />
<input type="text" name="PAddress" id="PAdress" />
<input type="text" name="PCity" id="PCity" />
After that you can bind a keyup event of PName field:
var searchTimeout; //Timer to wait a little before fetching the data
$("#PName").keyup(function() {
searchKey = this.value;
clearTimeout(searchTimeout);
searchTimeout = setTimeout(function() {
getUsers(searchKey);
}, 400); //If the key isn't pressed 400 ms, we fetch the data
});
The js function to fetch the data:
function getUsers(searchKey) {
$.ajax({
url: 'getUser.php',
type: 'POST',
dataType: 'json',
data: {value: searchKey},
success: function(data) {
if(data.status) {
$("#PAddress").val(data.userData.PAddress);
$("#PCity").val(data.userData.PCity);
} else {
// Some code to run when nothing is found
}
}
});
}
And ofcourse the getUser.php
file:
<?php
//... mysql connection etc.
$response = Array();
$response['status'] = false;
$query = mysql_query("SELECT `PAddress`, `PCity` FROM `Users` WHERE `PName` LIKE '%".$_POST['value']."%' LIMIT 1"); //Or you can use = instead of LIKE if you need a more strickt search
if(mysql_num_rows($query)) {
$userData = mysql_fetch_assoc($query);
$response['userData'] = $userData;
$response['status'] = true;
}
echo json_encode($response);
Good luck! ^^
Upvotes: 2