0) { $('#sugestoes').show(); $('#sugestoesLista').html(data); } }); } } function sugestoesEnvia(thisValue) { $('#busca').val(thisValue); setTimeout("$('#sugestoes').hide();", 200); } Bom resumindo o js acima funciona da seguinte forma: na função sugestoesMostra, o primeiro if testa se os caracteres da variável busca é igual a zero, se for ele esconde a div sugestoes. Logicamente, pois se o usuário não digitou nada, não precisamos mostrar a caixa de sugestões. Se este if for falso, entraremos no else, aí chamamos o script ajaxBusca.php, passando pra queryString o conteúdo da busca, em seguida é feito outro teste, relacionado ao ajaxBusca, para saber se o resultado da query retornada é maior que zero, se for irá mostrar os resultados em lista. Na função sugestoesEnvia, apenas enviamos o valor retornado da lista para o campo de pesquisa. Agora passamos ao PHP, o arquivo já foi mencionado: ajaxBusca.php <?php // Verifica se foi enviado uma string na busca. if(isset($_POST['queryString'])) { /* Muito provavelmente você possui um arquivo com os dados que faz a conexão com o banco. Caso tenha apenas chame o arquivo aqui dentro, por exemplo: require("conexao.php"); Abaixo um exemplo para conexão. */ $host = "localhost"; $usr = "USUARIO"; $pwd = "SENHA"; $bd = "BANCO"; //Conexão BD mysql_connect("$host","$usr","$pwd") or die ("ERRO: Não foi possível conectar ao BD."); mysql_select_db("$bd") or die ("ERRO: Não foi possível abrir o BD."); $queryString = ($_POST['queryString']); // Verifica se quantidade de caracteres é maior que zero. if(strlen($queryString) >0) { /* Caso a quantidade de caracteres for maior que zero, entraremos aqui, onde é executado o SQL. */ $query = mysql_query("select CAMPO from TABELA where CAMPO like '%$queryString%' limit 20"); /* Bom, referente ao SQL acima, altere o CAMPO e a TABELA para o seu caso. Note que a $queryString é passada com porcentagem (%), com isso caso o usuário digite aba retornaremos "abacate, abacaxi", se estiver em nossa tabela é claro. */ if($query) { // Se a query for executada corretamente, entraremos nesta linha abaixo, onde é feito um laço de repetição, atribuindo os valores a variável $result. while ($result = mysql_fetch_array($query)) { /* Abaixo mostraremos o resultado em lista, novamente altere onde diz CAMPO para o campo de sua tabela. */ echo ' onClick="sugestoesRecebe(\''.htmlentities($result[CAMPO]).'\');">'.htmlentities($result[CAMPO]).''; /* No onClick uma função: sugestoesRecebe, na qual mencionei anteriormente que serve para atribuir o resultado ao campo texto. */ } } else { echo 'ERRO: Ocorreu um problema com a consulta.'; } } } else { echo 'Não é permitido acesso direto a esse script.'; } ?> Bom, o código acima está todo comentado, mas se surgir alguma dúvida deixe um comentário. Passando para o CSS: .sugestoes { 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 #000000; color: #FFFFFF; } .sugestoesLista { margin: 0px; padding: 0px; } .sugestoesLista li { margin: 0px 0px 3px 0px; padding: 3px; cursor: pointer; } .sugestoesLista li:hover { background-color: #659CD8; } E por fim o HTML:   Isso é tudo pessoALL, um exemplo pode ser encontrado aqui no site, no canto superior direito. Dúvidas/críticas/sugestões deixe um comentários. []'s ' /> xALEXANDRE » Programação » JavaScript » Auto Completar Tutorial: JavaScript, PHP e MySQL.
 

"Todos nós tomamos diferentes trilhas na vida; mas, não importa aonde

Home » Categorias » Programação » JavaScript

Auto Completar Tutorial: JavaScript, PHP e MySQL.

Olá pessoALL!

Hoje o post é sobre Auto Completar.

Uso muito a biblioteca jQuery para JavaScript. Então neste pequeno tutorial será usado JavaScript (jQuery), PHP, MySQL e CSS.

Ao utilizar um Auto Completar em um campo de Busca, torna-se muito mais prático para o usuário encontrar o que deseja, pois ao digitar uma palavra, ou um pedeço dela, retornamos um conteúdo na qual a palavra digitada faz parte.

Começando pelo JavaScript:
	function sugestoesMostra(busca) {
		if(busca.length == 0) {
			// Esconde as sugestões
			$('#sugestoes').hide();
		} else {
			$.post("http://www.xalexandre.com.br/buscaAuto/ajaxBusca.php", {queryString: ""+busca+""}, function(data){
				if(data.length >0) {
					$('#sugestoes').show();
					$('#sugestoesLista').html(data);
				}
			});
		}
	} 
	
	function sugestoesEnvia(thisValue) {
		$('#busca').val(thisValue);
		setTimeout("$('#sugestoes').hide();", 200);
	}

Bom resumindo o js acima funciona da seguinte forma: na função sugestoesMostra, o primeiro if testa se os caracteres da variável busca é igual a zero, se for ele esconde a div sugestoes. Logicamente, pois se o usuário não digitou nada, não precisamos mostrar a caixa de sugestões.

Se este if for falso, entraremos no else, aí chamamos o script ajaxBusca.php, passando pra queryString o conteúdo da busca, em seguida é feito outro teste, relacionado ao ajaxBusca, para saber se o resultado da query retornada é maior que zero, se for irá mostrar os resultados em lista.

Na função sugestoesEnvia, apenas enviamos o valor retornado da lista para o campo de pesquisa.

Agora passamos ao PHP, o arquivo já foi mencionado: ajaxBusca.php

	<?php		
		// Verifica se foi enviado uma string na busca.
		if(isset($_POST['queryString'])) {
				
			/*	Muito provavelmente você possui um arquivo com os 
				dados que faz a conexão com o banco. Caso tenha 
				apenas chame o arquivo aqui dentro, por exemplo:
				require("conexao.php");
				
				Abaixo um exemplo para conexão.
			*/
			$host = "localhost";		
			$usr = "USUARIO";		
			$pwd = "SENHA";		
			$bd = "BANCO";
			
			//Conexão BD
			mysql_connect("$host","$usr","$pwd") or die
			("ERRO: Não foi possível conectar ao BD.");
			mysql_select_db("$bd") or die 
			("ERRO: Não foi possível abrir o BD.");
			
			$queryString = ($_POST['queryString']);
			
			// Verifica se quantidade de caracteres é maior que zero.
			if(strlen($queryString) >0) {
				
				/*	Caso a quantidade de caracteres for maior que zero, 
					entraremos aqui, onde é executado o SQL.
				*/
				$query = mysql_query("select CAMPO from TABELA 
				where CAMPO like '%$queryString%' limit 20");
				/*	Bom, referente ao SQL acima, altere o CAMPO e a 
					TABELA para o seu caso.
					Note que a $queryString é passada com porcentagem 
					(%), com isso caso o usuário digite aba retornaremos 
					"abacate, abacaxi", se estiver em nossa tabela é claro.
				*/	
				if($query) {
					// Se a query for executada corretamente, entraremos 
					nesta linha abaixo, onde é feito um laço de repetição, 
					atribuindo os valores a variável $result.
					while ($result = mysql_fetch_array($query)) {
						/*	Abaixo mostraremos o resultado em lista, 
							novamente altere onde diz CAMPO para o campo 
							de sua tabela.
						*/
	         		echo '
  • onClick="sugestoesRecebe(\''.htmlentities($result[CAMPO]).'\');">'.htmlentities($result[CAMPO]).'
  • '; /* No onClick uma função: sugestoesRecebe, na qual mencionei anteriormente que serve para atribuir o resultado ao campo texto. */ } } else { echo 'ERRO: Ocorreu um problema com a consulta.'; } } } else { echo 'Não é permitido acesso direto a esse script.'; } ?>

    Bom, o código acima está todo comentado, mas se surgir alguma dúvida deixe um comentário.

    Passando para o CSS:

    
    

    E por fim o HTML:

    	

    Isso é tudo pessoALL, um exemplo pode ser encontrado aqui no site, no canto superior direito. Dúvidas/críticas/sugestões deixe um comentários.
    []'s

     

    Comentários

    1. Julia - 05/04/2009 @ 12:41:40 | E-mail
    Estou com algum problema... Ele conecta-se ao banco de dados perfeitamente, mas quando entro com alguma strig ele não faz nada e caso eu de enter ele retorna na mesma página como se nada tivesse acontecido. Coloquei o js no head do html, correto?! O action do form fica sem nada? Se puder me ajudar, agradeco. valeu! ;)
    2. irian - 18/08/2009 @ 12:21:33
    so falta funcionar isso ai

     


    Captcha


     

    Submarino.com.br