Ir para conteúdo

Arquivado

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

Dian Carlos

[Resolvido] Selecionar uma cidade e carregar os estados em select

Recommended Posts

Olá amigos do iMasters :thumbsup:

 

Em uma área administrativa que desenvolvi fiz com que quando uma cidade fosse selecionada os bairros dela fossem carregados na select box 'bairro'. Localmente funciona, mas na internet não.

 

O código está abaixo, será que é alguma recurso do servidor que está desabilitado?

 

$(function(){
$('select#cidade').change(function(){
	if( $(this).val() ) {
		$('select#bairro').html('<option value="">Carregando Bairros ...</option>').attr('disabled', 'disabled');
		$("span#addBairro").show();
		$.getJSON('layout/elements/uJson.php?section=searchBairros&uCidade=' + $(this).val() + ' - ' + $('#estado').val(),{ajax: 'true'}, function(j){
			$('select#bairro').removeAttr('disabled');
			var options = '<option value="">-- Selecione o Bairro --</option><option value="">-----</option>';	
			for (var i = 0; i < j.length; i++) {
				options += '<option value="' + j[i].bairro + '">' + j[i].bairro + '</option>';
			}	
			$('select#bairro').html(options).fadeIn();
		});
	} else {
		$('select#bairro').html('<option value="">-- Escolha uma Cidade --</option>');
		$("span#addBairro").css({display: 'none'});
	}
});
});

 

Desde já agradeço a ajuda de todos..

 

Grande abraço e vamu que vamu..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi amigo,

 

aparece alguma coisa no console de erros ? Ctrl+Shift+J no Firefox

http://wbruno.com.br/2011/03/31/como-debugar-javascript-firefox-erros-comuns/

Compartilhar este post


Link para o post
Compartilhar em outros sites

William. Tirei um print do console do Firefox.

 

i.gif

 

acho que não apareceu nenhum erro do javascript ali. O javascript ta verificando os bairro no banco de dados, por meio de uma página que nomeei como uJson.php

 

O código da parte onde carrega os bairros.

 

if ($_GET['section'] == 'searchBairros'){
$uCidade = trim(mysql_real_escape_string($_REQUEST['uCidade']));

$bairros = array();

$sql = "SELECT DISTINCT * FROM `ubairros` WHERE ((`uBairroCidade` = '" . $uCidade . "')) ORDER BY `uBairroNome` ASC";
$query = mysql_query($sql);
while ($uBairro = mysql_fetch_assoc($query)) {

	$uBairroNome = $uBairro['uBairroNome'];

	$bairros[] = array(
		'bairro' => $uBairroNome,
	);
}

echo(json_encode($bairros));
}

 

Este código está certo? tipo, localmente funciona.. não entendi isso..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você disse que localmente funciona, e na internet não; então não é a url? Já tentou colocar o endereço completo ao inves de começar com /layout/... ?

 

Júlio, não funcionou.. Se fosse isso o meu sistema não ia funcionar de jeito nenhum pois ele é todo nessa base.

 

Tipo, eu uso o esquema de carregar página dentro de div's, que eu peguei do site do William, sempre funcionou, sem nenhum problema. Isso pode estar dando algum conflito?

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos testar:

 

$('select#cidade').change(function(){
   alert('chamou o change');

informe se aparece esse alert qndo você altera a opção do select.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim Bruno, apareceu o alert, na verdade eu sei que o change chama a função, pois o campo bairro apresenta a mensagem 'Carregando Bairros...' só que eles não aparecem, fica assim a vida toda..

 

2.gif

 

Já verifiquei o banco de dados se estava tudo certo, sim, está tudo certo, exatamente como eu fiz em meu computador.

 

E o pior é que, isso está atrasando o cliente.. kkkk.. ele não pode cadastrar os itens no site dele por causa disso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, então se a função está sendo chamada, temos que agora debugar o ajax:

 

http://wbruno.com.br/2011/04/14/como-debugar-ajax-firebug/

 

Qndo você faz o change, deverá aparecer a requisição na aba xhr do firebug, verifique oque está acontecendo com a requisição.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Willian.. Deu o seguinte erro na página, não foi no script, mas sim no php.

 

3.gif

 

Mas eu não sei onde estou errando na página uJson.php. o código dela está logo abaixo.

 

<?php

require_once '../../inc/conf.php';
conectDatabase();
session_start();

if (!isset($_SESSION['uUserCode'])){header ("Location: ../../login.php");}

if ($_GET['section'] == 'searchBairros'){
$uCidade = trim(mysql_real_escape_string($_REQUEST['uCidade']));

$bairros = array();

$sql = "SELECT DISTINCT `uImovelBairro` FROM `uimoveis` WHERE ((`uImovelCidade` = '" . $uCidade . "')) ORDER BY `uImovelBairro` ASC";
$query = mysql_query($sql);
while ($uBairro = mysql_fetch_assoc($query)) {

	$uBairroNome = $uBairro['uImovelBairro'];

	$bairros[] = array(
		'bairro' => $uBairroNome,
	);
}

echo(json_encode($bairros));
}

if ($_GET['section'] == 'addBairro'){

$uBairro = $_POST['uBairroInto'];
$uCidade = $_POST['uCidade'];

$sql = 'SELECT COUNT(*) AS total FROM `ubairros` WHERE ((`uBairroNome` LIKE "%'.$uBairro.'%")) AND ((`uBairroCidade` LIKE "%'.$uCidade.'%"))';
$query = mysql_query($sql);
$total = mysql_result($query, 0, 'total');

if($total == 0){
$sql = mysql_query("INSERT INTO `ubairros` (`uBairroCidade`, `uBairroNome`) VALUES ('$uCidade','$uBairro')")or die(mysql_error());
if ($sql){echo'<option value="' . $uBairro . '" selected="selected">' . $uBairro . '</option>';}
}
}

if ($_GET['section'] == 'addCategoria'){

$uCategoria = $_POST['uCategoriaInto'];

$sql = 'SELECT COUNT(*) AS total FROM `utipo` WHERE ((`uImovelTipo` LIKE "%'.$uCategoria.'%"))';
$query = mysql_query($sql);
$total = mysql_result($query, 0, 'total');

if($total == 0){
$sql = mysql_query("INSERT INTO `utipo` (`uImovelTipo`) VALUES ('$uCategoria')")or die(mysql_error());
if ($sql){echo'<option value="' . $uCategoria . '" selected="selected">' . $uCategoria . '</option>';}
}
}
?>

 

William. Eu usei o Notepad++ e converti essa página para UTF-8 sem BOM.. Ai a função funcionou, só que não retornou os bairros das cidades que tinha cadastrado. Só retornou isso aqui ó:

 

4.gif

 

O que aconteceu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

troque para estar ordem:

 

session_start();

require_once '../../inc/conf.php';
conectDatabase();

agora sabemos q o motivo de ter funcionado no teu localhost, é pq o teu servidor local está mal configurado(configurado para não exibir erros de baixo level do php)

 

 

Qnto a não ter retornado nada, ai você tem q verificar no php.

Pode ser problemas com os acentos, falta de dados na base..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai William, agora deu certo.. Na verdade não tava dando certo, ai eu peguei um mesmo código que fazia a mesma coisa e dava certo e coloquei no mesmo lugar e só alterei os campos, mas não percebi que a busca quando era feita ia com os termos errados, agora isso foi resolvido. Muito obrigado..

 

Obs.: Sai pra uma reunião e o cliente já ligou reclamando.. kkkk..

 

Olha gostei muito do Firebug, eu já tinha visto ele mas pensava que ele funcionava igual ao 'Inspecionar Elemento' do Chrome, então nem dei bola. Mas agora que eu vi o poder dele sempre vou usar.

 

Muito obrigado William, parabéns pelo seu trabalho. Seus artigos no seu site são muito bons, eu criei a nova plataforma de administração de sites da minha empresa com um de seus tutoriais.. :worship:

 

Grande abraço amigo. Até mais..

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.