Ir para conteúdo
  • 0
anepri

select com país, estado, cidade não funciona

Pergunta

Preciso fazer uma página de consulta onde selecionando a cidade traga como resultado estabelecimentos comerciais daquela cidade. O exemplo do código que estou usando funciona perfeitamente com países, estados e cidade, mas na hora que faço a função "lojas", mesmo o código sendo idêntico não aparece o resultado. O que tem me deixado doida é que os primeiros select funcionam, mas o último "lojas" não funciona de jeito nenhum! Alguém pode olhar o código e me dizer onde estou pecando?

 

$(function(){

	// Pais
	function pais(){
		$.ajax({
			type: 'GET',
			url: 'funcoes.php',
			data: {
				acao: 'pais'
			},
			dataType: 'json',
			success: function(data){
				console.log(data);
				
				for(i = 0; i < data.qtd; i++){
					$('select[name=pais]').append('<option value="'+data.id[i]+'">'+data.pais[i]+'</option>');
				}
			}
		});
	}
	pais();

	function estado(pais){
		$.ajax({
			type: 'GET',
			url: 'funcoes.php',
			data: {
				acao: 'estado',
				id: pais
			},
			dataType: 'json',
			beforeSend: function(){
				$('select[name=estado]').html('<option>Carregando...</option>');
			},
			success: function(data){
				$('select[name=estado]').html('');
				$('select[name=estado]').append('<option>Selecione o estado</option>');
				for(i = 0; i < data.qtd; i++){
					$('select[name=estado]').append('<option value="'+data.id[i]+'">'+data.estado[i]+'</option>');
				}
			}
		});
	}


	// Cidade
	function cidade(estado){
		$.ajax({
			type: 'GET',
			url: 'funcoes.php',
			data: {
				acao: 'cidade',
				id: estado
			},
			dataType: 'json',
			beforeSend: function(){
				$('select[name=cidade]').html('<option>Carregando...</option>');
			},
			success: function(data){
				$('select[name=cidade]').html('');
				$('select[name=cidade]').append('<option>Selecione a cidade</option>');
				for(i = 0; i < data.qtd; i++){
					$('select[name=cidade]').append('<option value="'+data.id[i]+'">'+data.cidade[i]+'</option>');
				}
			}
		});
	}

	function contrubuinte(cidade){
		$.ajax({
			type: 'GET',
			url: 'funcoes.php',
			data: {
				acao: 'contrubuinte',
				id: cidade
			},
			dataType: 'json',
			beforeSend: function(){
				$('select[name=contrubuinte]').html('<option>Carregando...</option>');
			},
			success: function(data){
				console.log(data);
				$('select[name=contrubuinte]').html('');
				$('select[name=contrubuinte]').append('<option>Selecione a contrubuinte</option>');
				for(i = 0; i < data.qtd; i++){
					$('select[name=contrubuinte]').append('<option value="'+data.id[i]+'">'+data.contrubuinte[i]+'</option>');
				}
			}
		});
	}

	$('select[name=pais]').change(function(){
		var id = $(this).val();
		estado(id);
	});

	$('select[name=estado]').change(function(){
		var idEstado = $(this).val();
		cidade(idEstado);
	});

	$('select[name=cidade]').change(function(){
		var id = $(this).val();
		contrubuinte(id);
	});
});
<?php

require("config.php");

$retorno = array();

if($_GET['acao'] == 'pais'){
	$sql = $pdo->prepare("SELECT * FROM pais");
	$sql->execute();	
	$n = 0;
	$retorno['qtd'] = $sql->rowCount();
	while($ln = $sql->fetchObject()){
		$retorno['pais'][$n] = $ln->pais;
		$retorno['id'][$n] 	 = $ln->id;
		$n++;
	}	
}

if($_GET['acao'] == 'estado'){
	$id = $_GET['id'];
	$sql = $pdo->prepare("SELECT * FROM estados WHERE id_pais = :id");
	$sql->bindValue(":id", $id, PDO::PARAM_INT);
	$sql->execute();
	$n = 0;
	$retorno['qtd'] = $sql->rowCount();
	while($ln = $sql->fetchObject()){
		$retorno['estado'][$n] = $ln->estado;
		$retorno['id'][$n] 	   = $ln->id;
		$n++;
	}	
}

if($_GET['acao'] == 'cidade'){
	$id = $_GET['id'];
	$sql = $pdo->prepare("SELECT * FROM cidades WHERE id_estado = :id");
	$sql->bindValue(":id", $id, PDO::PARAM_INT);
	$sql->execute();
	$n = 0;
	$retorno['qtd'] = $sql->rowCount();
	while($ln = $sql->fetchObject()){
		$retorno['cidade'][$n] = $ln->cidade;
		$retorno['id'][$n] 	   = $ln->id;
		$n++;
	}	
}

if($_GET['acao'] == 'contribuinte'){
	$id = $_GET['id'];
	$sql = $pdo->prepare("SELECT * FROM contribuinte WHERE id_cidade = :id");
	$sql->bindValue(":id", $id, PDO::PARAM_INT);
	$sql->execute();
	$n = 0;
	$retorno['qtd'] = $sql->rowCount();

	while($ln = $sql->fetchObject()){
		$retorno['contribuinte'][$n] = $ln->contribuinte;
		$retorno['id'][$n] 	   = $ln->id;
		$n++;
	}	
}


die(json_encode($retorno));
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<select name="pais">
		<option>Selecione o Pais</option>
	</select>

	<select name="estado">
		<option>Selecione o Estado</option>
	</select>

	<select name="cidade">
		<option>Selecione a Cidade</option>
	</select>

	<select name="contribuinte">
		<option>Selecione o Contribuinte</option>
	</select>


	<script src="jquery.js"></script>
	<script src="funcoes.js"></script>
</body>
</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 resposta a esta questão

Recommended Posts

  • 0

Olá, boa noite!!

Antes de mais, suponho que "lojas" seja o "Contribuinte" ?

A tabela 'contribuinte' existe ? tem registos ? está correntamente relacionada ?

 

Tenta criar um ficheiro php novo em que só tenhas essa tal SelectBox das lojas e tenta fazer um código em separado só para ela, podes sempre ativar a visibilidade dos erros no PHP ajuda bastante nestas situações .Para isso basta acrescentares ao teu ficheiro de código estes comandos:

<?php
// Desativa toda exibição de erros
error_reporting(0);

// Exibe erros simples
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Exibir E_NOTICE também pode ser bom para mostrar variáveis não iniciadas...
// ou com erros de digitação.
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Exibe todos os erros, exceto E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);

// Exibe todos os erros PHP (see changelog)
error_reporting(E_ALL);

// Exibe todos os erros PHP
error_reporting(-1);

// Mesmo que error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

?>

*NOTA-> Num funcionamento normal da WebPage, deves colocar estes comandos em comentário ou então exclui-los.... 

 

Se mesmo assim não conseguires chegares a nenhum caminho diz!!

 

Boa-sorte

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por JOSELUISALD
      Bom dia. Em minha aplicação o cliente quer uma cópia de seu sistema localmente e remoto (hospedado). Tem como eu fazer a sincronização dos bancos de dados, para que tudo que seja feito localmente seja inserido automaticamente no banco remoto? Desde já obrigado.
    • Por Hannah25
      Eu estou criando um cms, encontrei algumas barreiras para concluir o projeto, alguém sabe como o wordpress substitui a função include pelas abreviações: wp_header(), wp_footer() e wp_ ?
      joker123 หวยหุ้น
      Seja lá o que for esta bem escondido naquele código enorme : (  
      Se alguém souber me ajude a criar essa função! ou uma alternativa sem ser a tradicional include uma personalizada...
    • Por JGD
      Supondo que tenho um input name = dataHoraINI...
      Este input tem o  valor/value =  21/03/2019 09:00 
      Chamo a função abaixo pelo <button...:
       
      <button class="btn btn-primary" onclick="popdataJGD('dataHoraINI','pop1',document.getElementById('dataHoraINI').value)"> <i class="glyphicon glyphicon-calendar"></i> </button>  
      São 03 parâmetros: popdataJGD(objeto, div, value).. Sendo o 3º: data + hora.
       
      Observar que passo para a função o 3º parâmentro assim: document.getElementById('dataHoraINI').value
      Como poderia passar este 3º paramentro como string e inline a data e hora ???
       
      Qual diferença entre: 
      document.getElementById('dataHoraINI').value E
      this.value E/Ou ainda.
      var data_hora = "21/03/2019 09:00" Neste caso : popdataJGD(objeto, div, data_hora)... Observar no code acima a questão das aspas simples.
       
      Agradeço qualquer ajuda conceitual
       
    • Por Ruy Hoffmann
      Olá pessoal, boa tarde,
       
      Eu fiz um site, comprarei o domínio e hospedagem provavelmente ainda hoje (alguma sugestão de um bom provedor de domínios?) e já estou providenciando para que o site ficar no ar. Até ai tudo bem. Esse será um site comercial, então fiz as meta tags para melhorar nas buscas, to pesquisando sobre SEO, etc...
       
      Mas em pararelo fiz um OUTRO site completo também, que vai do index até diversas outras páginas, é um módulo administrativo financeiro que só terá acesso por mim e pela minha esposa. Estou pensando em colocar o acesso no mesmo domínio do site acima, algo do tipo a url do site comercial /admin/a_console.php (que é onde eu e minha esposa efetuaremos nosso login).
       
      Minha pergunta é: para este SEGUNDO SITE que vai trabalhar independente do primeiro eu não quero que as páginas dele apareçam nas buscas, nada, nadinha... Como faço isso? Seria algo do tipo uma INTRANET, onde é acessível pela internet, mas só aparece para quem tem a url da página de login. Alguém sabe como faço para NÃO aparecer?
       
      Obrigado,
       
×

Informação importante

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