Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Select dependente de select

Boa tarde, estou com a seguinte duvida.

DETALHE:Não é nenhum exercício da alura, apenas uma duvida para compartilhar

Quero criar um em todos os estados que venha do banco de dados, algo do tipo:

Paraiba

Pernambuco Dai quero criar outro dos municipios filtrados logo abaixo. Por exemplo: se no primeiro select escolher paraiba mostre todos os municípios da paraiba
8 respostas

jhonatta você tem uma tabela com estados e outra com municípios? O estado é escolhido em um form?

Tenho isso: //Inicio <?php $estado = new EstadoDAO(); $estados = estado.listarEstado(); ?>

<?php foreach($estados as $key) : ?>

<?php $key['nomeestado'] ?> <?php endforeach; ?> //Abaixo terá um para municipio O detalhe é que as opções que aparecer no novo só pode aparecer se tiver alguma ligação com o estado escolhido. Por exemplo: Se a pessoa escolher o estado Paraiba (primeiro select) no segundo select só poderá aparecer os municipios da Paraiba, caso escolha Pernambuco só poderá aparecer municipios de pernambuco. Lembrando que tudo está no banco de dados. Não estou conseguindo fazer isso!

Cliquei sem querer em SOLUÇÃO na postagem anterior... SIDNEI está em um formulário sim

Eu acho que você deve fazer um evento via javascript por exemplo. Ao selecionar o estado, o evento é disparado.

As ações do evento devem ser montar dinamicamente este segundo select.

Foi o que um amigo meu falou, iniciei o curso de javascript aqui do alura

Eu tenho exemplo de algo parecido.

Era exercício que pedia escolher país;

Caso o país escolhido fosse o Brasil, mostrar select de estados.

Os dados não vinham de tabela, mas sim de uma lista (array) Não sei se ajudaria;

Acho que ajudaria sim!!!

solução!

Johnata, segue o código;

Preste atenção que tem um select chamado "pais" e uma função associada a ele chamada verificapais()

Cada vez que trocar a seleção do select (escolher um pais) ele vai executar a função verificapais()

Se o pais for brasil, vai chamar a função aparece() que faz aparecer o select de estados.

Se o pais não for o brasil, vai executar a desaparece() que esconde o select de estados.

tem um pouco de java básico, isto não intefere na parte javascript.

Para fazer aparecer e desaparecer temum truque que é alterar a classe do select.

Qualquer coisa a gente vai por email, ok?

<!DOCTYPE html>

<html>

<head>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <title>JSP Page (Javabeans)</title>
        <link rel="stylesheet" type="text/css" href="estilo.css"/>
<script language="javascript">

function desaparece() {
         document.getElementById("UF1").setAttribute("class","desaparece");
}    
function aparece() {
         document.getElementById("UF1").attributes["class"].value="aparece";  

         document.getElementById("UF1").setAttribute("class","aparece");

}    
function verificaPais(value) {
         if (value === 'Brasil') {
            aparece(); 
         }
         else {
            desaparece();
         }

}
</script>


    </head>

    <body>

        <%

String var = "";
String aspa = "\"";


//Usando um LinkedHashMap
LinkedHashMap LhashMapBr = new LinkedHashMap();
LhashMapBr.put("AC","Acre               ");
LhashMapBr.put("AL","Alagoas            ");
LhashMapBr.put("AP","Amapá              ");
LhashMapBr.put("AM","Amazonas           ");
LhashMapBr.put("BA","Bahia              ");
LhashMapBr.put("CE","Ceará              ");
LhashMapBr.put("DF","Distrito Federal   ");
LhashMapBr.put("ES","Espirito Santo     ");
LhashMapBr.put("GO","Goiás              ");
LhashMapBr.put("MA","Maranhão           ");
LhashMapBr.put("MT","Mato Grosso        ");
LhashMapBr.put("MS","Mato Grosso do Sul ");
LhashMapBr.put("MG","Minas Gerais       ");
LhashMapBr.put("PA","Pará               ");
LhashMapBr.put("PB","Paraiba            ");
LhashMapBr.put("PR","Paraná             ");
LhashMapBr.put("PE","Pernambuco         ");
LhashMapBr.put("PI","Piauí              ");
LhashMapBr.put("RJ","Rio de Janeiro     ");
LhashMapBr.put("RN","Rio Grande do Norte");
LhashMapBr.put("RS","Rio Grande do Sul  ");
LhashMapBr.put("RO","Rondônia           ");
LhashMapBr.put("RR","Roraima            ");
LhashMapBr.put("SC","Santa Catarina     ");
LhashMapBr.put("SP","São Paulo          ");
LhashMapBr.put("SE","Sergipe            ");
LhashMapBr.put("TO","Tocantis           ");

// usando Vetor
String[] paises = new String[4];
paises[0] = "Alemanha";
paises[1] = "Brasil";
paises[2] = "Canada";
paises[3] = "Dinamarca";




        %>
        <form method="post" action="TrataForm.jsp" name="formulario">

            Nome:

            <input type="text" size="20" id="nome" name="nome" />
            <br /><br />
            Idade:
            <input type="text" size="3" id="idade" name="idade" />
            <br /><br />
            <select name="pais" id="pais" onchange="verificaPais(this.value);">
              <option>Escolha o País</option>
              <option value="Alemanha">Alemanha</option>
              <option value="Brasil">Brasil</option>
              <option value="Canada">Canadá</option>
              <option value="Dinamarca">Dinamarca</option>
            </select>      
            &nbsp;&nbsp;&nbsp; 
           <%

//usando Linked Hash Map

//Usando LinkedHashMap - com este recurso podemos obter os objetos de forma ordenada
out.println("<select name=" + aspa+"UF1" + aspa +  "id=" + aspa+"UF1"+aspa + "class="+aspa+"desaparece"+ aspa+">");         
out.println("<option>Escolha a UF</option>") ;  
   Iterator iterator2 = LhashMapBr.keySet().iterator(); 
 while(iterator2. hasNext() ){ 

  String Lkey=(String)iterator2.next(); 
 //  out.println("Key :"+key+" : Value : "+hashMapBr.get(key)); 
   out.println("<option value="+aspa+Lkey+aspa+">"+LhashMapBr.get(Lkey)+"</option>");   

  }    

out.println("</select>");                  


            %>   
            &nbsp;&nbsp;&nbsp;            
            <div id="limpa">
            <br  /> 
            <br />
            </div>
            <input id="botao" type="submit" value="Enviar" />

        </form>

    </body>

</html>