Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DouglasCar

Envio de campos através de checkbox

Recommended Posts

Pessoal estou com um problema em enviar dois campos em um checkbox.

Tenho o seguinte código para a página onde seleciono os participantes e a empresa correspondente aos mesmos:

<%@page import="java.sql.*"%><%@page import="conexao.*"%><html><body><form name="participantes" method="post" action="confirma_cadParticipante.jsp"> <%String nomeusuario = "";nomeusuario = String.valueOf(session.getValue("nomeusuario"));String movimento = request.getParameter("movimento");String empresa = request.getParameter("empresa");String grupo = request.getParameter("grupo");Conexao conexao = new Conexao();Connection conn = null;PreparedStatement pstmt = null;conn = conexao.getConnection();String SQL = "";Connection conn2 = null;PreparedStatement pstmt2 = null;conn2 = conexao.getConnection();String SQL2 = "";Connection conn3 = null;PreparedStatement pstmt3 = null;conn3 = conexao.getConnection();String SQL3 = "";try {                SQL  ="Select nome from contato";                pstmt = conn.prepareStatement(SQL);                ResultSet rs = pstmt.executeQuery();                while(rs.next()){                    nomedocontato = rs.getString(1);                }                String codempresa = new String("");                String id = new String("");                if (!("".equals(nomedocontato))){%>                <br><tr><b><center>Seleção de Participantes:</b>                </tr>                <br>                <br>                    <tr><b>Lista de Todos os Contatos Cadastrados</b>                        </tr>                           <br>                           <br>                        <table>                        <tr>                        <td><center><b>Movimento:</b></td>                        <td><select name="movimento">                        <%SQL  = "Select idmovtocto, titulo from movcontato order by titulo";                        pstmt = conn.prepareStatement(SQL);                        rs = pstmt.executeQuery();                        while (rs.next()){%>                            <option value="<%=rs.getString(1)%>"><%=rs.getString(2)%></option>                        <%}                        %></select></td></tr><tr></tr><%                        SQL  = "Select codempresa from empresa";                        pstmt = conn.prepareStatement(SQL);                        rs = pstmt.executeQuery();                        while (rs.next()){                            id = rs.getString(1);                                                       SQL2 = "Select codcontato, nome from contato where codempresa =?";                            pstmt2 = conn2.prepareStatement(SQL2);                            pstmt2.setString (1, id);                            ResultSet rs2 = pstmt2.executeQuery();                            while (rs2.next()){                                String codcontato = rs2.getString(1);                                String nome = rs2.getString(2);                                                               SQL3 = "Select codempresa, nome from empresa where codempresa =?";                                pstmt3 = conn3.prepareStatement(SQL3);                                pstmt3.setString (1, id);                                ResultSet rs3 = pstmt3.executeQuery();                                while (rs3.next()){                                    codempresa = rs3.getString(1);                                    String nomeempresa = rs3.getString(2);                                    out.println(id);                                    %>                        </table>                                    <td align="left"><input type="checkbox" name="participantes" value="<%=codcontato%>"><%=nome%>-  <%=nomeempresa%></td><br><br>                                    <%session.putValue("idempresa",id);                                }                            }                        }                    %>                    <table>                        <td><input type="submit" name="Submit" value="Salvar"></td>                        <%session.putValue("nomeusuario",nomeusuario);                        session.putValue("empresa",codempresa);                         %>                    </form>                    <form name="form1" method="post" action="cadParticipante.jsp">                        <td align="left"><input type="submit" name="Submit2" value="Voltar"></td>                        <%session.putValue("nomeusuario",nomeusuario);                        %>                    </form>                    </table>                    <%                    }                else{                        %><br><br><br><br><br><br><br><br>                        <td align="center"><font size="4" color="#AA0000">Não existem contatos cadastrados</font></td>                        <script language="Javascript"><!--                        var timer = 2;                        function countdown(){                            if(timer > 0){                                timer -= 1;                                setTimeout("countdown()",1000);                            }                            else{                                location.href='cadParticipante.jsp';                                <%session.putValue("nomeusuario",nomeusuario);                                %>                            }                        }                        countdown();                        --></script>                        <%            }        }}catch (Exception e) {    //out.println("Não foi possível conectar ao banco" + e.getMessage());}finally{    try{        pstmt.close();        conn.close();        pstmt2.close();        conn2.close();        pstmt3.close();        conn3.close();    }catch (Exception e){        e.printStackTrace();    }}%></body></head></html>
E este código para a página onde é feita a ainserção dos participantes:
<%@page import="java.sql.*"%><%@page import="java.util.*"%><%@page import="conexao.*"%><%@page import="java.text.*"%><html><body><body><%    Conexao conexao = new Conexao();    Connection conn = null;    PreparedStatement pstmt = null;    conn = conexao.getConnection();    String SQL = "";    Connection conn2 = null;    PreparedStatement pstmt2 = null;    conn2 = conexao.getConnection();    String SQL2 = "";    Connection conn3 = null;    PreparedStatement pstmt3 = null;    conn3 = conexao.getConnection();    String SQL3 = "";    String nomeusuario = "";    nomeusuario = String.valueOf(session.getValue("nomeusuario"));    String participantes[] = request.getParameterValues("participantes");    String empresa = "";    empresa = String.valueOf(session.getValue("empresa"));    String movimento1 = request.getParameter("movimento");    String codcontato1 = request.getParameter("codcontato");    String nomeusuario1 = new String("");    if (nomeusuario.equalsIgnoreCase("")){        nomeusuario1 = "null";     }    else{        nomeusuario1 =  nomeusuario;    }try {        if (participantes != null){                String participante1 = new String("");                for ( int i = 0; i < participantes.length; i++ ){                    participante1 += participantes[i];                    String participante2 = participantes[i];                    SQL  = "Select codcontato from contato where codcontato = "+participante2;                    pstmt = conn.prepareStatement(SQL);                    ResultSet rs = pstmt.executeQuery();                    while(rs.next()){                        String codcontato= rs.getString(1);                        SQL2  = "Select max(idmovtocto) as movimento from movcontato";                        pstmt2 = conn2.prepareStatement(SQL2);                        ResultSet rs2 = pstmt2.executeQuery();                        while (rs2.next()){                            String movimento = rs2.getString(1);                            SQL3  = "Insert into participantes(idmovtocto, codcontato, codempresa)" +                                    " values ('"+movimento1+"', '"+codcontato+"', '"+empresa+"')";                            pstmt3 = conn3.prepareStatement(SQL3);                            pstmt3.executeUpdate();                       }                    }                }            %><br><br><br><br><br><br><br><br>                <td align="center"><font size="4" color="#AA0000">Participante Cadastrado com Sucesso</font></td>                <script language="Javascript"><!--                var timer = 2;                function countdown(){                    if(timer > 0){                        timer -= 1;                        setTimeout("countdown()",1000);                    }                    else{                          location.href='cadParticipante.jsp';                        <%session.putValue("nomeusuario",nomeusuario);                        %>                    }                }                countdown();                --></script>                           <%        }        else{            %><br><br><br><br><br><br><br><br>            <td align="center"><font size="4" color="#AA0000">Você precisa marcar um contato</font></td>                                    <script language="Javascript"><!--            var timer = 2;            function countdown(){                if(timer > 0){                    timer -= 1;                    setTimeout("countdown()",1000);                }                else{                      location.href='selecParticipantes.jsp';                    <%session.putValue("nomeusuario",nomeusuario);                    %>                }            }            countdown();            --></script>            <%        }} catch (Exception e) {    out.println("Não foi possível conectar ao banco" + e.getMessage());}finally{    try{        pstmt.close();        conn.close();        pstmt2.close();        conn2.close();        pstmt3.close();        conn3.close();    }catch (Exception e){        e.printStackTrace();    }}%></body></html>
Nesta página quando executo a gravação dos registros verifico que ao gravar mais de um participante, o codcontato dos dois é gravado corretamente, mas o id gravado é o mesmo para os dois, sendo que já executei testes onde o id que na primeira página aparece diferente para os dois na página de gravação é pego o id do último e gravado para ambos. Agradeço se alguém puder me ajudar a resolver este problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu problema esta na conexão que é apenas uma e portanto antes dele efetivamente cadastrar o primeiro candidato, ele busca novamente o id maximo.Para resolver isso você terá que setar o autoComit da conexão com false e dar comit a cada iteração para poder buscar o novo id.Outra solucão mais profissional seria a programação em camadas e criar um gerenciador de conexão para evitar tratar os ID. Pois um candidato não tem id, esta é uma cararcteristica do relacional. E deve ficar apenas na camada de banco.Espero ter ajudado.Um abraçoAndré Cunha

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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