Jsp x select x forEach

4 respostas
W
Olá Todos esto aqui mais uma vez, e seguinte tenho varias tabelas no banco de dados, duas delas ( aluno e disciplina) tem um relacionamento muito para muitos, o que gera uma terceira tabela aluno_disciplina, na hora de cadastrar o aluno quero que no meu select ja venham as diciplinas carregadas do BD, estou usando jsp e jsl eu consiguei fazer no relacionamento muitos para um (aluno e turma ) deu certo fazendo de muitos para um assim:
<label for="idturma">Turma</label>
<div class="div_texbox">
<select name="idturma">
<c:forEach var="turma" items="${turmas}">
<option value="${turma.id}" ${turma.id eq aluno.turma.id ? "SELECTED" : ""}>${turma.nome}</option>
</c:forEach>
</select>
</div>
 <label for="idescola">Escola</label>
<div class="div_texbox">
<select name="idescola">
<c:forEach var="escola" items="${escolas}">
<option value="${escola.idescola}" ${escola.idescola eq aluno.escola.idescola ? "SELECTED" : ""}>${escola.nome}</option>
</c:forEach>
</select>
</div>
[code] Nesse caso e mais simples pois na própria tabela do aluno tem a indentificaçao da turma sem a nessecidade de uma terceira tabela, mas Como ficaria no caso de um relacionamento muito para muitos tenho :aluno, disciplina e a tabela aluno_ disciplina associativista que guarda as chaves estrangeiras: tentei de varias formas mas não consegui, qualquer ajudas sera de grande importaria para mim

4 Respostas

ssh

cara, sou iniciante mas não aconcelho faze assim não. faça um método java que faça uma busca completa no banco. qual banco de dados você está utilizando?

Você teria que fazer algo mais ou menos assim:

SELECT a.nomeDisc FROM SALA a
WHERE a.idDisc IN (SELECT p.idDisc FROM tabAlunoDisc p WHERE a.idDisc = p.idDisc AND p.idAluno = ?)

é uma dica, eu prefiro, não sei se é viável! só tentando ajudar.

W
ssh:
cara, sou iniciante mas não aconcelho faze assim não. faça um método java que faça uma busca completa no banco. qual banco de dados você está utilizando?

Você teria que fazer algo mais ou menos assim:

SELECT a.nomeDisc FROM SALA a
WHERE a.idDisc IN (SELECT p.idDisc FROM tabAlunoDisc p WHERE a.idDisc = p.idDisc AND p.idAluno = ?)

é uma dica, eu prefiro, não sei se é viável! só tentando ajudar.

O Banco que to utilizando e o MYSQL, no meu caso estou utilizado o Hibernante não tendo a necessariedade de códigos sql o Hibernate fica encarregado de fazer isso, nao sei se voce intende?? Minha duvida montar o scripit para o casso do relacionamento muito para muitos, por que na hora que a aplicação seja carregada ja quero que o select venha preenchido com os dados da outra tabela, consegui fazer assim no relacionamento muito para um, cujo script ficou assim e ta funcionando:
<label for="idturma">Turma</label>  
<div class="div_texbox">  
<select name="idturma">  
<c:forEach var="turma" items="${turmas}">  
<option value="${turma.id}" ${turma.id eq aluno.turma.id ? "SELECTED" : ""}>${turma.nome}</option>  
</c:forEach>  
</select>  
</div>  
<label for="idescola">Escola</label>  
<div class="div_texbox">  
<select name="idescola">  
<c:forEach var="escola" items="${escolas}">  
<option value="${escola.idescola}" ${escola.idescola eq aluno.escola.idescola ? "SELECTED" : ""}>${escola.nome}</option>  
</c:forEach>  
</select>  
</div>

quero saber com fz no casso muito para muitos, onde as chaves estrangeiras ficam em tabelas separadas

ssh

rsrs, é por isso então, ainda não conheço hibernate.

att.

W

Beleza cara, valeu

Criado 9 de outubro de 2011
Ultima resposta 10 de out. de 2011
Respostas 4
Participantes 2