AutoCompleter Tutorial
As always, links to a demo and ZIP at the bottom, Enjoy!
I thought i would write this tutorial because most of the auto completer applications i have seen just dump the code into a zip and tell you how to use it rather than how and why it works, knowing about this enables you to customise it a lot more (this has been demonstrated with the other apps i have written here)!

And so we begin:
JavaScript
<script src="jquery-1.2.1.pack.js" type="text/javascript"><!--mce:0--></script><script type="text/javascript"><!--mce:1--></script>
JS Explaniation
Ok, the above code it the guts to the script, this allows us to hook into the rpc.php file which carries out all the processing.
The Lookup function takes the word from the input box and POSTS it to the rpc.php page using the jQuery Ajax POST call.
IF the inputString is ’0′ (Zero), it hides the suggestion box, naturally you would not want this showing if there is nothing in the text box. to search for.
ELSE we take the ‘inputString’ and post it to the rpc.php page, the jQuery $.post() function is used as follows…
$.post(url, [data], [callback])
The ‘callback’ part allows to hook in a function, this is where the real magic if thats what you can call it happens.
IF the ‘data’ returned length is more than zero (ie: there is actually something to show), show the suggestionBox and replace the HTML inside with the returned data.
SIMPLE!
Now for the PHP Backend (RPC.php)
As always my PHP Backend page is called rpc.php (Remote Procedure Call) not that it actually does that, but hey-ho.
// PHP5 Implementation - uses MySQLi. $db = new mysqli('localhost', 'root' ,'', 'autoComplete'); if(!$db) { // Show error if we cannot connect. echo 'ERROR: Could not connect to the database.'; } else { // Is there a posted query string? if(isset($_POST['queryString'])) { $queryString = $_POST['queryString']; // Is the string length greater than 0? if(strlen($queryString) >0) { // Run the query: We use LIKE '$queryString%' // The percentage sign is a wild-card, in my example of countries it works like this... // $queryString = 'Uni'; // Returned data = 'United States, United Kindom'; $query = $db->query("SELECT value FROM countries WHERE value LIKE '$queryString%' LIMIT 10"); if($query) { // While there are results loop through them - fetching an Object (i like PHP5 btw!). while ($result = $query ->fetch_object()) { // Format the results, im using <li> for the list, you can change it. // The onClick function fills the textbox with the result. echo '</li> <li onclick="fill(''.$result->value.'');">'.$result->value.'</li> '; } } else { echo 'ERROR: There was a problem with the query.'; } } else { // Dont do anything. } // There is a queryString. } else { echo 'There should be no direct access to this script!'; } } ?>
PHP Explaination
Im not going to go into much detail here because there are loads of comments in the code above.
Basically, it takes the ‘QueryString’ and does a query with a wildcard at the en.
This means that in this case of the code each key-press generates a new query, this is MySQL intensive if its always being done, but short of making it exceedingly complex it is fine for small scale applications.
The PHP code is the part you have to change to work in your system, and all the it is updating the ‘$query’ to your database, you should be able to see where you put the table column name in etc…
CSS Styling – im using CSS3, YEA BABY! much easier although limits the functionality to Firefox and Safari.
<!-- .suggestionsBox { position: relative; left: 30px; margin: 10px 0px 0px 0px; width: 200px; background-color: #212427; -moz-border-radius: 7px; -webkit-border-radius: 7px; border: 2px solid #000; color: #fff; } .suggestionList { margin: 0px; padding: 0px; } .suggestionList li { margin: 0px 0px 3px 0px; padding: 3px; cursor: pointer; } .suggestionList li:hover { background-color: #659CD8; } -->
The CSS is pretty standard, nothing out of the ordinary.
Main HTML
<div>
<div>
Type your county (for the demo):
<input id="inputString" onkeyup="lookup(this.value);" size="30" type="text" />
</div> <div class="suggestionsBox" id="suggestions" style="display: none;">
<img style="position: relative; top: -12px; left: 30px;" src="upArrow.png" alt="upArrow" />
<div class="suggestionList" id="autoSuggestionsList">
</div>
</div>
</div>That is the main bit of HTML, really all you need to run this is an input text box with the ‘onkeyup’ function set to lookup(this.value); Also, i recommend NOT changing the ID of the input box, unless you change it in the Javascript section
Screenshots
I suppose you want to see some more screen shots…. OK.

And another one!

And now for the links… this is probably what you are all looking for!
Demo: Auto Complete Demo
Source ZIP: AutoComplete Source ZIP
If you need a domain to get you off your local test box buy domains at Network Solutions!
If you have any problems, just post them up here (as comments) and i am sure i can help you fix it
Thanks for the continued support,
Jamie.

The pop up seems to work only for the first word but when i press space bar to type the second, the popup doesnt appear. is there a way to implement this? The code is great though.
it is working perfectly on some pages but on some pages it is capturing whole current open screen in which the field exist, but not the values from db. Can some one help me??
this is not working for the codeiniter framework!!
Hi, Neat post. There is a problem together with your website in web explorer, might check this? IE nonetheless is the market chief and a large component to folks will omit your excellent writing because of this problem.
[...] Autocomplete by AjaxDaddy jQuery Autocomplete Plugin with HTML formatting jQuery Autocompleter AutoCompleter (Tutorial with PHP&MySQL) quick Search jQuery [...]
kuch bhi post kar dete
Hey been using this a lot, so thanks a bunch. Only issue I’m having lately is with a dynamic form. Basically it clones several fields for adding inventory to the db, it requires id=”somename1″ and then increments the number, thus autocompleter only works for the first row. Is there a way for it to fetch the new id on each subsquent row…somename2…somename3 etc so I can keep using it?
Thanks in advance hope someone can help me out here.
Hi:
This looks really good but I can’t figure out how to pass the country ID to the POST.
I have modified the SELECT code as such:
SELECT id, value
FROM countries
WHERE value LIKE ‘%$queryString%’ LIMIT 10″
How do I pass “ID: to the POST?
Hi!
Great post, very useful. I got it working within minutes and am not a programmer.
Is there anyway to remove duplicates from showing in the suggestions so that I can spare myself creating a table on the database?
I’m using it to suggest states from a table that lists cities and states, so I’m getting a bunch of duplicates.
Thanks!
[...] AutoCompleter Tutorial – jQuery(Ajax)/PHP/MySQL [...]
[...] AutoCompleter (Tutorial with PHP&MySQL). [...]
Hey
Is there anyway we could have two auto Suggests on the same form, i tried but couldnt get it work
Help me
[...] Autocomplete by AjaxDaddy. jQuery Autocomplete Plugin with HTML formatting. jQuery Autocompleter. AutoCompleter (Tutorial with PHP&MySQL). quick Search jQuery [...]
[...] Autocomplete by AjaxDaddy. jQuery Autocomplete Plugin with HTML formatting. jQuery Autocompleter. AutoCompleter (Tutorial with PHP&MySQL). quick Search jQuery [...]
Preforming a check like below can eliminate the problem with the space.
$no_Spaces = str_replace(” “, “_”, $queryString);
then including that variable instead of the queryString seems to work correctly.
Hope that helps
not working in codeigniter……………!!!!!!!!!!!!!11
[...] Demo | Source page [...]
[...] AutoCompleter Tutorial - jQuery(Ajax)/PHP/MySQL [...]
Awesome tutorial.
Thanks.
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
fgsfsd
sdf
s
df
sd
f
hi
Hello i wish to use autocomplete in joomla 1.7, which has a cck seblod. I have developed a field through cck, in this field i wish to use autocomplete. Any clues to how can i achive this ?
[...] Autocomplete by AjaxDaddy.jQuery Autocomplete Plugin with HTML formatting.jQuery Autocompleter.AutoCompleter (Tutorial with PHP&MySQL).quick Search jQuery [...]
The download source-link is down.
[...] Autocomplete by AjaxDaddy.jQuery Autocomplete Plugin with HTML formatting.jQuery Autocompleter.AutoCompleter (Tutorial with PHP&MySQL).quick Search jQuery [...]
Thanks a lot for this awesome and practically implemented article.
Regard’s
PARVESH TANDON