1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Inserir dados em duas tabelas no banco, usando um formulario dentro do outro, porem está parando na servelet...

Olá, estou com uma dúvida quanto como inserir dados em uma duas tabelas usando apenas um form dentro de outro, jogando para duas servelet, pela lógica creio que não tem como, porém, eu na dúvida testei e comprovei. :p

Estou puxando dados da classe Usuario no meu projeto, usando extends para armazenar na Classe, porém creio que estou tendo problemas em modelar o banco de forma correta, ou erro de sentença SQL :/

Porfavor, me deem uma luz!

Att, Ramon Ferreira.

O formulário abaixo:

<%@page import="Modelo.Perfil"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Inserir Funcionário</title>

        <link rel="stylesheet" type="text/css" href="css/layout.css">

        <link rel="stylesheet" type="text/css" href="css/ddsmoothmenu.css"/>

        <script type="text/javascript" src="js/jquery-1.10.0.js"></script>
        <script type="text/javascript" src="js/ddsmoothmenu.js">

            /***********************************************
             * Smooth Navigational Menu- (c) Dynamic Drive DHTML code library (www.dynamicdrive.com)
             * This notice MUST stay intact for legal use
             * Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
             ***********************************************/

        </script>
        <script type="text/javascript" src="js/maskedinput.js"></script>

        <script type="text/javascript">

            ddsmoothmenu.init({
                mainmenuid: "templatemo_menu", //menu DIV id
                orientation: 'h', //Horizontal or vertical menu: Set to "h" or "v"
                classname: 'ddsmoothmenu', //class added to menu's outer DIV
                //customtheme: ["#1c5a80", "#18374a"],
                contentsource: "markup" //"markup" or ["container_id", "path_to_menu_file"]

            });
        </script>

        <script type="text/javascript">

            $(function($) {            
                $("#data").mask("99/99/9999");
                $("#fone").mask("(99)9999-9999");
                $("#fonecel").mask("(99)9999-9999")
                $("#cep").mask("99999-999");
                $("#rg").mask("999.999-9");
                $("#cpf").mask("999.999.999-99");
            });           
        </script>

        <script type="text/javascript" language="javascript">
            function validaForm(){
                var formulario = document.form_inserir_cliente;
                    if(formulario.nome.value == "") {
                        alert("O campo nome deve ser preenchido!");
                    return false;
                    }
                    if(formulario.rg.value == "") {
                        alert("O campo rg deve ser preenchido!");
                    return false;
                    }
                    if(formulario.cpf.value == "") {
                        alert("O campo cpf deve ser preenchido!");
                    return false;
                    }
                    if(fomulario.dataNascimento == ""){
                        alert("O campo aniversário deve ser preenchudo!");
                    return false;
                    }
                    if(formulario.endereco.value == ""){
                        alert("O campo endereço deve ser selecionado!");
                    return false;
                    }
                    if(formulario.cep.value == ""){
                        alert("O campo cep deve ser preenchido!");
                    return false;
                    }
                    if(formulario.bairro.value == ""){
                        alert("O campo bairro deve ser preenchido!");
                    return false;
                    }
                    if(formulario.cidade.value == ""){
                        alert("O campo cidade deve ser preenchido!");
                    return false;

                    if(formulario.uf.value == ""){
                        alert("O campo uf deve ser preenchido!");
                    return false;
                    }
                    if(formulario.pais.value == ""){
                        alert("O campo pais deve ser preenchido!");
                    return false;
                    }
                    if(formulario.telefone.value == ""){
                        alert("O campo telefone deve ser preenchido!");
                    return false;
                    }
                    if(formulario.celular.value == ""){
                        alert("O campo celular deve ser preenchido!");
                    return false;
                    }
                    if(formulario.email.value == ""){
                        alert("O campo email deve ser preenchido!");
                    return false;
                    }
                }
                return true;
            }
        </script>
    </head>
    <body>
        <!-- MENU -->
        <div id="templatemo_header_wrapper">
            <div id="templatemo_header">
                <div id="site_title"><a href="#">Funcionário</a></div>
                <div id="templatemo_menu" class="ddsmoothmenu">
                    <%@include file="menu.jsp" %>
                </div>
            </div>
        </div>
        <!-- MAIN -->
        <div id="templatemo_main_top"></div>
        <div id="templatemo_main">
            <form id="geral_form" name="form_inserir_funcionario" action="inserir_funcionario.do" method="post" onsubmit="return validaForm();">
                <fieldset>
                    <legend><h4>Novo Funcionário</h4></legend>
                    <form float="right" id="geral_form" name="form_inserir_usuario" action="inserir_usuario.do" method="post" onsubmit="return validaForm();">
                        <label>Nome:</label>
                        <input type="text" name="nome" id="nome"/>
                        <br>        
                        <label float="right">Login:</label>
                        <input float ="right" type="text" name="login"/>
                        <br>
                        <label float="right">Senha:</label>
                        <input float ="right" type="password" name="senha"/>
                        <br>
                        <label>Perfil:</label>
                        <select float="right" name="idPerfil">
                            <option float="right" value="">Selecione um perfil</option>
                                    <%
                                        try{
                                            PerfilDAO pDB = new PerfilDAO();
                                            pDB.conectar();
                                            ArrayList<Perfil> lista = pDB.listar();
                                            pDB.desconectar();
                                            for(Perfil p:lista){
                                                out.print("<option value='"+p.getIdperfil()+"'>"+p.getPerfil()+"</option>");
                                            }    
                                        }catch(Exception e){
                                            out.print(e);
                                        }
                                    %>    
                                </select>
                        </form>
                    <br>
                    <label>RG:</label>
                    <input type="text" name="rg" id="rg"/>
                    <br>
                    <label>CPF:</label>
                    <input type="text" name="cpf" id="cpf"/>
                    <br>
                    <label>Aniversário:</label>
                    <input type="text" name="dataNascimento" id="data"/>
                    <br>
                    <label>Endereço:</label>
                    <input type="text" name="endereco"/>
                    <br>
                    <label>CEP:</label>
                    <input type="text" name="cep" id="cep"/>
                    <br>
                    <label>Bairro:</label>
                    <input type="text" name="bairro"/>
                    <br>
                    <label>Cidade:</label>
                    <input type="text" name="cidade"/>
                    <br>
                    <label>UF:</label>
                    <input type="text" name="uf"/>
                    <br>
                    <label>País:</label>
                    <input type="text" name="pais"/>
                    <br>
                    <label>Telefone:</label>
                    <input type="text" name="eelefone" id="fone"/>
                    <br>
                    <label>Celular:</label>
                    <input type="text" name="eelular" id="fonecel"/>
                    <br>
                    <label>E-mail:</label>
                    <input type="text" name="email"/>
                    <br>
                    <input  id="reset" class="submit_btn float_r" type="submit" value="Inserir"/>
                </fieldset>
            </form>

            <div class="cleaner"></div>
        </div>
        <!-- INFO -->
        <div id="templatemo_footer_wrapper">
            <div id="templatemo_footer">

                <div class="col col_14">
                    <h5>Blog's</h5>
                    <ul class="footer_list">
                        <li>FSK Corporate</li>
                    </ul>
                </div>
                <div class="col col_14">
                    <h5>Acesso Rápido</h5>
                    <ul class="footer_list">
                        <li><a href="index.jsp">Home</a></li>
                        <li><a href="listar_cliente.jsp">Cliente</a></li>
                        <li><a href="listar_fornecedor.jsp">Fornecedor</a></li>
                        <li><a href="listar_estoque.jsp">Estoque</a></li>
                        <li><a href="info.jsp">Info</a></li>
                    </ul>
                </div>
                <div class="col col_14">
                    <h5>Mídia Social</h5>
                    <ul class="footer_list">
                        <li><a href="#" class="social facebook">Facebook</a></li>
                        <li><a href="#" class="social twitter">Twitter</a></li>
                        <li><a href="#" class="social feed">Feed</a></li>
                    </ul>

                </div>

                <div class="col col_14 no_margin_right">
                    <h5>Boletim Informativo</h5>
                    <form action="#" method="get">
                        <input type="text" value="Digite seu e-mail aqui!" name="email" id="email" title="email" onfocus="clearText(this)" onblur="clearText(this)" class="newsletter_txt" />
                        <input type="submit" name="Subscribe" value=" Subscribe " alt="Subscribe" id="subscribe_button" title="Subscribe" class="subscribe_button"  />
                    </form>
                    <div class="cleaner h30"></div>
                    Copyright © 2013 <a href="#">FSK Corporate</a>
                    <br>
                    Designed by <a href="#" target="_parent">fsk_</a>
                </div>

                <div class="cleaner"></div>

            </div>
        </div>
    </body>
</html>

Servelet abaixo:

package Controle;

import Modelo.Funcionario;
import Modelo.FuncionarioDAO;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name = "InserirFuncionario", urlPatterns = {"/inserir_funcionario.do"})
public class InserirFuncionario extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {

            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet InserirFuncionario</title>");
            out.println("</head>");
            out.println("<body>");

            String idusuario = request.getParameter("idUsuario");
            String idperfil = request.getParameter("idPerfil");
            String nome = request.getParameter("nome");
            String login = request.getParameter("login");
            String senha = request.getParameter("senha");
            String rg = request.getParameter("rg");
            String cpf = request.getParameter("cpf");

            String dataNascimento = request.getParameter("dataNascimento");
            Calendar novaDataNascimento = null;

            String endereco = request.getParameter("endereco");
            String cep = request.getParameter("cep");
            String bairro = request.getParameter("bairro");
            String cidade = request.getParameter("cidade");
            String uf = request.getParameter("uf");
            String pais = request.getParameter("pais");
            String telefone = request.getParameter("telefone");
            String celular = request.getParameter("celular");
            String email = request.getParameter("email");
            if ( (!idusuario.trim().equals("")) && (!idperfil.trim().equals("")) && (!nome.trim().equals("")) && (!login.trim().equals("")) && (!senha.trim().equals("")) 
                    && (!rg.trim().equals("")) && (!cpf.trim().equals("")) && (!endereco.trim().equals("")) && (!cep.trim().equals("")) && (!bairro.trim().equals(""))
                    && (!cidade.trim().equals("")) && (!uf.trim().equals("")) && (!pais.trim().equals("")) && (!telefone.trim().equals("")) && (!celular.trim().equals(""))  
                    && (!email.trim().equals(""))) {
                try {
                    try {

                        Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataNascimento);
                        novaDataNascimento = Calendar.getInstance();
                        novaDataNascimento.setTime(date);

                    } catch (ParseException e) {
                        out.println("Erro de conversão de data");
                    }

                    Funcionario f = new Funcionario();
                    f.setIdUsuario(Integer.parseInt(idusuario));
                    f.setIdPerfil(Integer.parseInt(idperfil));
                    f.setNome(nome);
                    f.setLogin(login);
                    f.setSenha(senha);
                    f.setRg(rg);
                    f.setCpf(cpf);
                    f.setDataNascimento(novaDataNascimento);
                    f.setEndereco(endereco);
                    f.setCep(cep);
                    f.setBairro(bairro);
                    f.setCidade(cidade);
                    f.setUf(uf);
                    f.setPais(pais);
                    f.setTelefone(telefone);
                    f.setCelular(celular);
                    f.setEmail(email);

                    FuncionarioDAO fDB = new FuncionarioDAO();
                    fDB.conectar();
                    fDB.inserir(f);
                    fDB.desconectar();

                    out.println("<script type='text/javascript' language='javascript'>");
                        out.println("alert('Funcionario cadastrado com sucesso!');");
                        out.println("location.href='listar_funcionario.jsp';");
                    out.println("</script>");
                } catch (Exception e) {
                    out.print(e);
                }
            } else {
                out.println("<script type='text/javascript' language='javascript'>");
                    out.println("alert('Campos obrigatórios devem ser preenchidos!');");
                    out.println("history.back();");
                out.println("</script>");
            }
            out.println("</body>");
            out.println("</html>");

        } finally {
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}

Classe FuncionárioDAO abaixo:

package Modelo;

import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Calendar;

public class FuncionarioDAO extends DataBaseDAO{

    public FuncionarioDAO() throws Exception{}

    public ArrayList<Funcionario> listar() throws Exception{
        ArrayList<Funcionario> lista = new ArrayList<Funcionario>();

        String sql = "(SELECT * FROM funcionario) UNION (SELECT * FROM usuario)";      
        PreparedStatement pst = conn.prepareStatement(sql);
        ResultSet rs = pst.executeQuery();
            while(rs.next()){
                Funcionario func = new Funcionario();
                func.setIdFuncionario(rs.getInt("idFuncionario"));
                func.setIdUsuario(rs.getInt("idUsuario"));
                func.setIdPerfil(rs.getInt("idPerfil"));
                func.setLogin(rs.getString("login"));
                func.setNome(rs.getString("nome"));
                func.setRg(rs.getString("rg"));
                func.setCpf(rs.getString("cpf"));

                Calendar data = Calendar.getInstance();
                data.setTime(rs.getDate("dataNascimento"));
                func.setDataNascimento(data);

                func.setEndereco(rs.getString("endereco"));
                func.setCep(rs.getString("cep"));
                func.setBairro(rs.getString("bairro"));
                func.setCidade(rs.getString("cidade"));
                func.setUf(rs.getString("uf"));
                func.setPais(rs.getString("pais"));
                func.setTelefone(rs.getString("telefone"));
                func.setCelular(rs.getString("celular"));
                func.setEmail(rs.getString("email"));

                lista.add(func);
            }    
    return lista;
    }

    public Funcionario carregarPorId(int id)throws Exception{
        Funcionario func = new Funcionario();
        String sql = "(SELECT * FROM funcionario WHERE idFuncionario=?) UNION (SELECT * FROM usuario WHERE idUsuario=?)";
        PreparedStatement pst = conn.prepareStatement(sql);
        pst.setInt(1,id);
        ResultSet rs = pst.executeQuery();
            if(rs.next()){
                func.setIdFuncionario(rs.getInt("idFuncionario"));
                func.setIdUsuario(rs.getInt("idUsuario"));
                func.setIdPerfil(rs.getInt("idPerfil"));
                func.setLogin(rs.getString("login"));
                func.setNome(rs.getString("nome"));
                func.setRg(rs.getString("rg"));
                func.setCpf(rs.getString("cpf"));

                Calendar novadatanascimento = Calendar.getInstance();
                novadatanascimento.setTime(rs.getDate("dataNascimento"));
                func.setDataNascimento(novadatanascimento);

                func.setEndereco(rs.getString("endereco"));
                func.setCep(rs.getString("cep"));
                func.setBairro(rs.getString("bairro"));
                func.setCidade(rs.getString("cidade"));
                func.setUf(rs.getString("uf"));
                func.setPais(rs.getString("pais"));
                func.setTelefone(rs.getString("telefone"));
                func.setCelular(rs.getString("celular"));
                func.setEmail(rs.getString("email"));
            }
    return func;
    }

    public void inserir(Funcionario func) throws Exception {
    String sql = "INSERT INTO funcionario(idusuario,rg,cpf,dataNascimento,endereco,cep,bairro,cidade,uf,pais,telefone,celular,email) "
            + "VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?);"
            + "INSERT INTO usuario(idperfil, nome, login, senha) VALUES(?,?,?,?);";

    PreparedStatement pst = conn.prepareStatement(sql);
    pst.setInt(1, func.getIdUsuario());
    pst.setString(2, func.getRg());
    pst.setString(3, func.getCpf());

    Date dataNascimentoParaGravar = new Date(func.getDataNascimento().getTimeInMillis());
    pst.setDate(4,dataNascimentoParaGravar);

    pst.setString(5, func.getEndereco());
    pst.setString(6, func.getCep());
    pst.setString(7, func.getBairro());
    pst.setString(8, func.getCidade());
    pst.setString(9, func.getUf());
    pst.setString(10, func.getPais());
    pst.setString(11, func.getTelefone());
    pst.setString(12, func.getCelular());
    pst.setString(13, func.getEmail());
    pst.setInt(14, func.getIdPerfil());
    pst.setString(15, func.getNome());
    pst.setString(16, func.getLogin());
    pst.setString(17, func.getSenha());
    pst.execute();
    }

    public void deletar(Funcionario func) throws Exception {
    String sql = "DELETE FROM funcionario WHERE idFuncionario=?";
    PreparedStatement pst = conn.prepareStatement(sql);
    pst.setInt(1, func.getIdFuncionario());
    pst.execute();
    }

    public void alterar(Funcionario func) throws Exception{
    String sql = "UPDATE funcionario SET idUsuario=?, rg=?, cpf=?, dataNascimento=?, endereco=?, cep=?, "
            + "bairro=?, cidade=?, uf=?, pais=?, telefone=?, celular=?, email=? "
            + " WHERE idFuncionario=?;"
            + "UPDATE usuario SET idPefil=?, nome=?, login=?, senha=? WHERE idUsuario=?;";

    PreparedStatement pst = conn.prepareStatement(sql);
    pst.setInt(1, func.getIdUsuario());
    pst.setString(2, func.getRg());
    pst.setString(3, func.getCpf());

    Date dataNascimentoParaGravar = new Date(func.getDataNascimento().getTimeInMillis());
    pst.setDate(4,dataNascimentoParaGravar);

    pst.setString(5, func.getEndereco());
    pst.setString(6, func.getCep());
    pst.setString(7, func.getBairro());
    pst.setString(8, func.getCidade());
    pst.setString(9, func.getUf());
    pst.setString(10, func.getPais());
    pst.setString(11, func.getTelefone());
    pst.setString(12, func.getCelular());
    pst.setString(13, func.getEmail());
    pst.setInt(14, func.getIdPerfil());
    pst.setString(15, func.getNome());
    pst.setString(16, func.getLogin());
    pst.setString(17, func.getSenha());  
    pst.execute();
    }
}

Classe Funcionario abaixo:

package Modelo;

import java.util.Calendar;

public class Funcionario extends Usuario {
    private int idFuncionario;
    private String rg, cpf;
    private Calendar dataNascimento;
    private String endereco, cep, bairro, cidade, uf, pais;
    private String telefone, celular, email;

    public Funcionario(){}

    public Funcionario(int idFuncionario, String rg, String cpf, Calendar dataNascimento, String endereco, String cep, String bairro, String cidade, String uf, String pais, String telefone, String celular, String email, int idUsuario, int idPerfil, int idMenu, String nome, String login, String senha) {
        super(idUsuario, idPerfil, nome, login, senha);
        this.idFuncionario = idFuncionario;
        this.rg = rg;
        this.cpf = cpf;
        this.dataNascimento = dataNascimento;
        this.endereco = endereco;
        this.cep = cep;
        this.bairro = bairro;
        this.cidade = cidade;
        this.uf = uf;
        this.pais = pais;
        this.telefone = telefone;
        this.celular = celular;
        this.email = email;
    }

    public int getIdFuncionario() {
        return idFuncionario;
    }

    public void setIdFuncionario(int idFuncionario) {
        this.idFuncionario = idFuncionario;
    }

    public String getRg() {
        return rg;
    }

    public void setRg(String rg) {
        this.rg = rg;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public Calendar getDataNascimento() {
        return dataNascimento;
    }

    public void setDataNascimento(Calendar dataNascimento) {
        this.dataNascimento = dataNascimento;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getCep() {
        return cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public String getUf() {
        return uf;
    }

    public void setUf(String uf) {
        this.uf = uf;
    }

    public String getPais() {
        return pais;
    }

    public void setPais(String pais) {
        this.pais = pais;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getCelular() {
        return celular;
    }

    public void setCelular(String celular) {
        this.celular = celular;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}
  • Não entendi a necessidade de um form dentro do outro, e também não consegui entender o erro que esta ocorrendo.

    Kiko Mesquita   27 de jun de 2013
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags jsp mysql sql ou faça a sua própria pergunta.