Back-End

22 jan, 2009

Autocomplete com PHP + Jquery

Publicidade

Olá, amigos do iMasters, este é meu segundo artigo no site (o primeiro falava sobre paginação com Ajax) e gostaria de compartilhar com vocês uma maneira bem simples e rápida de realizar buscas dinâmicas no seu site/sistema.

Neste exemplo, o usuário digita o país desejado e uma lista de opções é carregada. Logo depois clica com o mouse e a opção é mandada para o input. A partir deste artigo você poderá criar muitas variações do mesmo para satisfazer a sua necessidade.

Utilizarei p PHP com a Biblioteca javascript JQuery na sua implementação, espero que aproveitem. Lembrando que discorrerei somente sobre algumas linhas do mesmo e no final deste artigo disponibilizarei o código para download. Vamos lá então:

1º Passo: Index.php – aqui precisamos realizar a chamada do Jquery e criar a função que busca os dados no nosso busca_paises.php. A função lookup carrega a lista e a função fill manda o item da lista clicado pelo mouse para o nosso input.

<script type="text/javascript" src="jquery-1.3.js"></script>
<script type="text/javascript">
	function lookup(inputString) {
		if(inputString.length == 0) {
			// Hide the suggestion box.
			$('#suggestions').hide();
		} else {
			$.post("busca_pais.php", {queryString: ""+inputString+""}, function(data){
				if(data.length >0) {
					$('#suggestions').show();
					$('#autoSuggestionsList').html(data);
				}
			});
		}
	} // lookup
	
	function fill(thisValue) {
		$('#inputString').val(thisValue);
		setTimeout("$('#suggestions').hide();", 200);
	}
</script>

2º Passo: No mesmo index.php – temos nosso input onde digitamos a nossa busca e a div autoSuggestionsList onde a lista será carregada pelo Ajax.

<form>
			Digite o país:
				<br />
				<input type="text" size="30" value="" id="inputString" onKeyUp="lookup(this.value);" onBlur="fill();" />
				
			<div class="suggestionsBox" id="suggestions" style="display: none;">
				<img src="upArrow.png" style="position: relative; top: -12px; left: 30px;" alt="upArrow" />
				<div class="suggestionList" id="autoSuggestionsList">
					 
				</div>
			</div>
		</form>

3º Passo: busca_pais.php – este arquivo é onde buscamos os dados para listá-los no nosso autocomplete. Inicialmente nos conectamos ao nosso banco de dados.


$conn = mysql_connect("servidor","usuario","senha")  or die ("Erro ao se conectar ao servidor");
$bd	  = mysql_select_db("banco") or die ("Erro ao se conectar ao banco");

agora realizamos nossa consulta no banco com base no que é digitado no nosso input

if(isset($_POST['queryString'])) {
		$queryString = $_POST['queryString'];
		if(strlen($queryString) >0) {
			$query = mysql_query("SELECT nome FROM paises WHERE nome LIKE '$queryString%' LIMIT 10") or die("Erro na consulta");
			while ($result = mysql_fetch_array($query)) {
       			echo '<li onClick="fill(\''.$result[0].'\');">'.$result[0].'</li>';
       		}
		}
	}	

Bem, amigos, é isso aí! Espero que aproveitem!!

Exemplo e arquivos

Grande abraço!