Olá Galera,
Mais uma vez eu precisando de ajuda aqui no Fórum.
Seguinte, quero fazer um select que verifique o que foi marcado no select anterior para exibir os dados corretos.
Se trata de uma página para cadastro de turmas de um curso, tenho cadastrado as disciplinas, professores, horários e também as disciplinas e horários que cada professor disponibilizou.
No primeiro select tem a disciplina, após selecionar a disciplina o próximo select deve exibir apenas os professores que disponibilizaram essa disciplina no sistema. (as tabelas estão relacionadas no banco de dados, e usando select where no bd ele exibe exatamente o que eu quero), então deve ser escolhido o professor, e em seguida o terceiro select vai mostrar apenas os horários que esse professor tem disponíveis.
A minha dificuldade é a seguinte: Como passar por parâmetro para o DAO o que foi marcado no select anterior, para fazer a consulta correta?
Já li alguns tópicos com algumas soluções em javascript mas não consegui implementar. vou colocar meu código abaixo e puderem me ajudem.
O estado atual do form no meu jsp, que lista as disciplinas, professores e horários, mas sem fazer esse tratamento é o seguinte:<form action="mvc" class="formulario">
Data Inicio: <input name="dataInicioEmTexto" type="text" id="dataFimEmTexto" size="50" /><br /><br />
Data Fim: <input name="dataFimEmTexto" type="text" id="dataFimEmTexto" size="50" /><br /><br />
Disciplina:
<select name="iddisciplinaEmTexto" id="iddisciplinaEmTexto">
<c:forEach var="disciplina" items="${daoDisciplina.lista}" varStatus="id">
<option value="${disciplina.id}">${disciplina.nome}</option>
</c:forEach>
</select><br /><br />
Professor:
<select name="idprofessorEmTexto" id="idprofessorEmTexto">
<c:forEach var="professor" items="${daoProfessor.lista}" varStatus="id">
<option value="${professor.id}">${professor.nome}</option>
</c:forEach>
</select><br /><br />
Horário:
<select name="idhorarioEmTexto" id="idhorarioEmTexto">
<c:forEach var="horario" items="${daoHorario.lista}" varStatus="id">
<option value="${horario.id}">${horario.horaInicial} às ${horario.horaFinal}</option>
</c:forEach>
</select><br /><br />
Situação:
<select name="situacao" id="situacao" style="width: 300px;">
<option value="Ativa">Ativa </option>
<option value="Inativa">Inativa</option>
<option value="Em Espera">Em Espera </option>
</select><br /><br />
<input type="hidden" name="logica" value="AdicionaTurmaLogic"/>
<input type="reset" name="cancelar" id="cancelar" value="Cancelar" />
<input name="gravar" type="submit" id="gravar" value="Gravar" />
</form>
select * from professor, disciplina, discprofessor where disciplina.iddisciplina = 1 and discprofessor.iddisciplina = disciplina.iddisciplina and professor.idprofessor = discprofessor.idprofessor group by professor.idprofessor
Esse sql mostra certinho o que eu preciso, para mostrar os horários que cada professor disponibilizou seria a mesma coisa mudando as tabelas.
Ou seja, eu sei o que preciso fazer. Passar por parâmetro o id da disciplina que for selecionada no primeiro select para o DAO que vai executar essa query, o segundo select simplesmente vai pegar os dados e listar.
Só não sei como passar o parâmetro para o DAO (ou alguma lógica que mande ele para o DAO) retornando os valores certos na outra select