Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

ruben007

[Resolvido] Problema com funcao para mostrar freguesias

Mensagens Recomendadas

ruben007

Boas tenho isto em HTML/PHP:

<option value=' '>Selecione o Distrito</option>
 <?php
 $sql="SELECT * FROM distritos ORDER BY nome";
 $prod_dest=mysqli_query($ligaBD,$sql);
 $num_registos=mysqli_num_rows($prod_dest);
 for($i=0;$i<$num_registos;$i++){
 $dados=mysqli_fetch_array($prod_dest);
 echo '<option value="'.$dados["id"].'">'.utf8_encode($dados["nome"]).'</option>';
 }
 ?>
 </select>
 <h5 style="margin-top:5px;margin-bottom:5px;"><small>Concelho</small></h5>
 <select style="margin:0px;" class="form-control" name="concelho" id="concelho_select" onchange='listar_freguesia()'>
 <option value=''>Selecione o Concelho</option>
 </select>
 <h5 style="margin-top:5px;margin-bottom:5px;"><small>Freguesia</small></h5>
 <select style="margin:0px;" class="form-control" name="freguesia" id="freguesia_select">
 <option value=''>Selecione a Freguesia</option>
 </select>

E isto em javascript:

Para o concelho tenho isto (funciona)

<!-- LISTAR CONCELHO -->
<script type="text/javascript">
function listar_concelho() {

<?php
echo 'var codigo=document.getElementById("distrito_select").value; alert(codigo);';
$procurar_distrito="SELECT * FROM distritos";
$faz_pesq_distrito=mysqli_query($ligaBD ,$procurar_distrito);
$num_distrito=mysqli_num_rows($faz_pesq_distrito);
$value=' ';
echo 'switch (codigo){';
for($i=0;$i<$num_distrito;$i++){
$distrito=mysqli_fetch_array($faz_pesq_distrito);
echo 'case "'.$distrito["id"].'":';
/*echo '$("#concelho_select").html("");
 var strToAdd ="<option value=" ">Selecione um Concelho</option>";
 $("#concelho_select").append(strToAdd);';*/
 $procurar_concelho="SELECT * FROM concelhos where id_distrito='".$distrito["id"]."'";
 $faz_pesq_concelho=mysqli_query($ligaBD ,$procurar_concelho);
 $num_concelho=mysqli_num_rows($faz_pesq_concelho);
 for($a=0;$a<$num_concelho;$a++){
 $concelho=mysqli_fetch_array($faz_pesq_concelho);
 echo 'var strToAdd'.$a.' ="<option value='.$concelho["id"].'>'.utf8_encode($concelho["nome"]).'</option>";';
 echo '$("#concelho_select").append(strToAdd'.$a.');';
 }	
echo 'break;';
}

/*echo 'default:
$("#concelho_select").html("");
var strToAdd ="<option value=" " >Selecione um Distrito</option>";
$("#concelho_select").append(strToAdd);
break;';*/
echo '}';
?>
}
</script>

E a das Freguesias:

<!-- LISTAR CONCELHO -->
<script type="text/javascript">
function listar_freguesia() {

<?php
echo 'var codigo1=$("#concelho_select").val(); alert(codigo1);';
$procurar_concelho="SELECT * FROM concelhos";
$faz_pesq_concelho=mysqli_query($ligaBD ,$procurar_concelho);
$num_concelhos=mysqli_num_rows($faz_pesq_concelho);
echo 'switch (codigo1){';
for($q=0;$q<$num_concelhos;$q++){
		 $concelho=mysqli_fetch_array($faz_pesq_concelho);
echo 'case "'.$concelho["id"].'":';
 $procurar_freguesia="SELECT * FROM freguesias where id_concelho='".$concelho["id"]."'";
 $faz_pesq_freguesia=mysqli_query($ligaBD ,$procurar_freguesia);
 $num_freguesia=mysqli_num_rows($faz_pesq_freguesia);
 for($x=0;$x<$num_freguesia;$x++){
	 $freguesia=mysqli_fetch_array($faz_pesq_freguesia);
 echo 'var strToAdd'.$a.' ="<option value='.$freguesia["id"].'>'.$freguesia["nome"].'</option>";';
 echo '$("#test").append(strToAdd'.$a.');';
 }
echo 'break;';
}
echo '}';
?>
}
</script>

A última não funciona e dá me este erro "Uncaught ReferenceError: listar_freguesia is not defined", já andei aqui de volta de isto e nada, será que me podem ajudar? A função é quase copy paste da outra de cima e não percebo pq não funciona

Editado por apocsantos
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
help

Uma dúvida. Você está tentando fazer um select que ao selecionar carrega outras opções, correto?

Se for isso, já pensou em fazer com jQuery?

Funciona basicamente assim, você vai carregar as options principais, quando houver um change nesse select, você faz uma consulta passando o id da option, e o resultado da consulta você insere em outro select, tudo via jquery.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ruben007

Nunca trabalhei com jquery como querys, será que me podia ajudar com a parte das querys sff? Mexer nos elementos ainda me desenrasco.

Só preciso como a executo e como recebo os valores das mesmas o resto eu faço

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ruben007

Já me orientei, usei isto:

<script>
$(document).ready(function() {
$('#distrito_select').change(function() {
	var codigo=$('#distrito_select').val();
	alert(codigo);
	$('#concelho_select').load('includes/carregarConcelhos.php?id='+codigo, { 'distrito': $('#distrito_select').value });
});
$('#concelho_select').change(function() {
	var codigo=$('#concelho_select').val();
	$('#freguesia_select').load('includes/carregarFreguesias.php?id='+codigo, { 'concelho': $('#concelho_select').value });
});
});
</script>

Editado por ruben007

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.