Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Michel Pureza

Exibição de Pesquisa

Recommended Posts

Olá Pessoal,

 

Estou precisando de ajuda para exibir uma pesquisa dentro de um campo(Ex. select). Eu gostaria de escolher uma opção de uma campo select e após isso realizar uma pesquisa que apareceria em outro select na mesma página. Um exemplo, eu escolheria em um select, um estado do Brasil, e em outro select na mesma página seria exibido as principais cidades daquele estado. Tudo isso com PHP e consulta ao banco de dados Mysql. Alguém tem alguma idéia de como realizar isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para isso seria necessário utilizar JavaScript (Ajax).

Assim quando um estado for escolhido você envia o nome (ou id) do estado (com Ajax) e o servidor faz a consulta no banco de dados (com PHP e SQL) e retorna os nomes das cidades (que é capturado pelo Ajax).

 

Veja o código abaixo: (Modifique o código como desejar e caso tenha dúvidas com o SQL é só postar.)

<?php
//iMasters Fóruns :: Desenvolvido por WeJr

//Faz cache dos resultados no navegador, assim a consulta não será realizada novamente para um mesmo estado.
header("Cache-Control: private, max-age=2592000"); header("Expires: ".gmdate('r', time()+2592000));

if(isset($_GET["estado"])){
	?><option value="nulo" selected="selected" disabled="disabled">Escolha uma Cidade</option><?php
	//O "option" acima deve ser colocado

	//Executa a consulta SQL
	//Aqui você deve fazer a consulta no banco de dados e retornar os valores assim: <option value="ID">Nome</option>

	//Exemplo para testar o código
		if($_GET["estado"] == "SP"){ ?><option value="SP">São Paulo</option><?php }
		if($_GET["estado"] == "RJ"){ ?><option value="RJ">Rio de Janeiro</option><?php }
}
else{
?>
<head>
<title>iMasters Fóruns -- Consulta com AJAX</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script>
function getCidades(estados,cidades,status) {
if(window.XMLHttpRequest) {
	req	= new XMLHttpRequest();
}
else if(window.ActiveXObject) {
	req = new ActiveXObject("Microsoft.XMLHTTP");
}

// Recebe o UF do estado
uf = document.getElementById(estados).value;

// URL para onde o UF sera enviado
var url = "select.php?estado="+uf;

req.open("Get", url, true); 
req.onreadystatechange = function() {
	if(req.readyState != 4) {
		document.getElementById(status).innerHTML = "Obtendo Cidades...";
	}
	else if(req.readyState == 4 && req.status == 200) {
		var options = req.responseText;

		document.getElementById(cidades).innerHTML = options;
		document.getElementById(cidades).disabled=false;
		document.getElementById(status).innerHTML = "";
	}
	else document.getElementById(status).innerHTML = "Erro!";
}
req.send(null);
}
</script>
</head>
<!-- Em getCidades() você deve especificar: A ID do select com os estados; A ID do select para as cidades; A ID da div para exibir a mensagem enquanto estiver pesquisando as cidades. -->
<select onchange="getCidades('estados','cidades','status');" id="estados">
<option value="nulo" selected="selected" disabled="disabled">Escolha um Estado</option>
<option value="SP">São Paulo</option>
<option value="RJ">Rio de Janeiro</option>
</select>

<select id="cidades" disabled="disabled">
<option value="nulo" selected="selected" disabled="disabled">Escolha uma Cidade</option>
</select>
<div id="status">
</div>
<?php } ?>

Todo código PHP pode ser transferido para outro arquivo, desde que a URL seja informada corretamente no código JavaScript.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.