Combo box com ajax e Jquery

18 de janeiro de 2010

Olá amigos venho hoje através deste artigo mostrar como criar um combo box com ajax usando Jquery, tenho certeza que será muito útil para muita gente, principalmente para quem ainda não conhece esta biblioteca fantástica de javascript que é a Jquery.

Existem outras bibliotecas e principalmente outros métodos para criar um combo-box com ajax, mas usarei neste artigo Jquery pela sua simplicidade e facilidade que ela proporciona. Até porque na web todos querem fazer as coisas muito rápido, então nada melhor que Jquery quando se fala em velocidade de desenvolvimento.

Vamos lá a primeira coisa que devemos fazer é o download da Jquery neste endereço: http://jquery.com/

Após o download vamos colocá-la na pasta do nosso projeto. Não esqueçam ok.

Agora com a biblioteca na pasta dos nossos arquivos, vamos começar a criar a página em html que servirá como exemplo para o nosso artigo.

<html>
			<head>
				<title>Ajax com Jquery</title>
				<script type="text/javascript" src="js/jquery.js"></script>
				<script type="text/javascript" src="js/cidadeAjax.js"></script>
			</head>
			<body>
				<form action="#" name="#" method="post">
					<label>Estado</label>
					<select name="uf">
						<option value="SP">SP</option>
						<option value="RJ">RJ</option>
						<option value="MG">MG</option>
					</select>
					<label>Cidade</label>
					<select name="cidades">
						<option value="0">--Primeiro selecione o estado--</option>
					</select>
				</form>
			</body>
		</html>

Pronto com o nosso arquivo html completo vamos criar o nosso script para realizar a mágica, vamos lá, eu por motivo de organização prefiro criar em um arquivo javascript separado da página então vamos criá-lo com o nome de cidadeAjax.js e colocar este código abaixo:

     //Aqui nós vamos iniciar a função após a mudança do select uf
     $("select[@name=uf]").change(function(){
          //Com isso nós vamos mudar o segundo select para procurando
          $('select[@name=cidades]').html('Procurando :::::::');
          //Aqui nós fazemos a requisição ajax para a página php utilizando Jquery
          $.post('buscacidade.php', { estado : $(this).val() },function(resposta){
               //Nesta linha nós preenchemos o select cidades com a resposta da
              //página php obtida no nosso arquivo php
              $('select[@name=cidades]').html(resposta);
          });
     });

E lógico pra finalizar vamos criar o nosso arquivo php que serve para fazer a busca no banco de dados e retornar a lista de cidades. Estou fazendo isto pensando que vocês já tem pelo menos uma tabela no banco de dados com as cidades cadastradas. Quem quiser pode adaptar o script para buscas as cidades de uma lista XML.

Pois bem aqui está o arquivo PHP vamos chamá-lo de buscacidade.php:

     if (isset($_POST['estado'])){
          $res=mysql_query('SELECT cidade FROM cidades WHERE uf = \''.
          $_POST['estado'].'\'');
          while($dados = mysql_fetch_array($res)){
               $cidades .= $dados['cidade'];
          }
          echo ''.$cidades.'';
     }else{
          echo 'Erro no envio dos dados';
     }

Pronto com estes arquivos já estamos com o nosso combo-box funcionando, logicamente estes arquivos podem e devem ser alterados de acordo com a sua necessidade. É possivel que ocorra erros de acentuação com quem estiver usando banco de dados SqlServer, para que isto não aconteça tente decodificar a variável cidades com a função utf8_encode.

Espero que tenha ficado claro o funcionamento do script, não tive a intenção de explicar detalhadamente, porque fiz este artigo pensando em demonstrar o funcionamento do framework Jquery e não PHP nem HTML, portanto espero que o leitor que for implementar este recurso já tenha prévios conhecimentos nestas linguagens, tudo bem. Dúvidadas coloquem ai embaixo, até mais.

Anúncios