Criando um submit para dois inserts

03/11/2017

0

PHP

Fala galera, blz!?

Estou adaptando o projeto do curso [url:descricao=Curso Primeira aplicação PHP com MVC]https://www.devmedia.com.br/curso/primeira-aplicacao-php-utilizando-mvc/2020[/url],

E gostaria de duas orientações:

1) Nesse mesmo projeto, eu quero fazer um insert numa segunda tabela q eu tenho no banco de dados. Os dados das duas tabelas, estão no mesmo form, logo, seria um submit pros dois inserts. Não to conseguindo fazer isso nessa estrutura MVC.

2) Tenho um campo nesse form, q é um input file, tentei usar a aula de vcs mesmo, https://www.devmedia.com.br/criando-upload-de-imagens-com-php-oo/28276, mesmo assim, não to conseguindo fazer esse upload funcionar. não to sabendo onde colocar o código exatamente.

poderiam me ajudar?

Essa dúvida foi gerada a partir de um comentário no vídeo [url:descricao=Persistindo dados com a Classe UsuarioDAO - Primeira Aplicação PHP utilizando MVC - Vídeo 19]//www.devmedia.com.br/persistindo-dados-com-a-classe-usuariodao-primeira-aplicacao-php-utilizando-mvc-video-19/38570[/url]
Luiz Souza

Luiz Souza

Responder

Post mais votado

03/11/2017

E aí blz?
Se eu entendi vc tem os dados no mesmo formulário e precisa passa-los a duas funções diferentes para serem gravados em duas tabelas diferentes, certo?
Se for isso eu tentaria submeter o form para o controller e no controller tratar os dados recebidos passando cada um para a devida função.

Não consegui abrir seu link sobre os arqvs deu 404...

Bot47

Bot47
Responder

Mais Posts

03/11/2017

Luiz Souza

então. eu tenho o arquivo FuncionarioController.php (/Controller), o FuncionarioDAO.php(/Models) e o Funcionario.php (/entidade).
O Action do form joga pra /funcionario/salvar. Eu tenho esse salvar no FuncionarioDAO e no FuncionarioControler

FuncionarioController.php
<?php

namespace App\\Controllers;

use App\\Lib\\Sessao;
use App\\Models\\DAO\\FuncionarioDAO;
use App\\Models\\Entidades\\Funcionario;
use App\\Models\\Validacao\\FuncionarioValidador;

class FuncionarioController extends Controller {

    public function index() {
        $funcionarioDAO = new FuncionarioDAO();

        self::setViewParam('listaFuncionarios', $funcionarioDAO->listar());

        $this->render('/funcionario/index');

        Sessao::limpaMensagem();
    }

    public function cadastro() {
        $this->render('/funcionario/cadastro');

        Sessao::limpaFormulario();
        Sessao::limpaMensagem();
        Sessao::limpaErro();
    }

    public function salvar() {

        $Funcionario = new Funcionario();
        $Funcionario->setNomeCompleto($_POST['nomeCompleto']);
        $Funcionario->setNascimento($_POST['nascimento']);
        $Funcionario->setNacionalidade($_POST['nacionalidade']);
        $Funcionario->setSexo($_POST['sexo']);

Sessao::gravaFormulario($_POST);

        $funcionarioValidador = new FuncionarioValidador();
        $resultadoValidacao = $funcionarioValidador->validar($Funcionario);

        if ($resultadoValidacao->getErros()) {
            Sessao::gravaErro($resultadoValidacao->getErros());
            $this->redirect('/funcionario/cadastro');
        }

        $funcionarioDAO = new FuncionarioDAO();


        $funcionarioDAO->salvar($Funcionario);

        Sessao::limpaFormulario();
        Sessao::limpaMensagem();
        Sessao::limpaErro();

        $this->redirect('/funcionario');
    }



===============================================
FuncionarioDAO.php
===============================================
namespace App\\Models\\DAO;

use App\\Models\\Entidades\\Funcionario;

class FuncionarioDAO extends BaseDAO {

    public function listar($id = null) {
        if ($id) {
            $resultado = $this->select(
            "SELECT * FROM dados_pessoais WHERE id = $id"
            );

            return $resultado->fetchObject(Funcionario::class);
        } else {
            $resultado = $this->select(
            'SELECT * FROM dados_pessoais'
            );
            return $resultado->fetchAll(\\PDO::FETCH_CLASS, Funcionario::class);
        }

        return false;
    }

    public function salvar(Funcionario $funcionario) {
    
       try {
            $nomeCompleto = $funcionario->getNomeCompleto();
            $nascimento = $funcionario->getNascimento();
            $nacionalidade = $funcionario->getNacionalidade();
            $sexo = $funcionario->getSexo();

return $this->insert(
            'dados_pessoais', ":nomeCompleto, "
            . ":nascimento, "
            . ":nacionalidade, "
            . ":sexo ",[
                ':nomeCompleto' => strtoupper($nomeCompleto),
                ':nascimento' => $nascimento,
                ':nacionalidade' => $nacionalidade,
                ':sexo' => $sexo
            ]
            );

        } catch (\\Exception $e) {
            throw new \\Exception("Erro na gravação de dados.", 500);
        }
        
    }



=====================================================
Funcionario.php
=====================================================

namespace App\\Models\\Entidades;

use DateTime;

class Funcionario
{
    private $id;
    private $data_inscricao;
    private $nomeCompleto;
    private $nascimento;
    private $nacionalidade;
    private $sexo;

 public function getId()
    {
        return $this->id;
    }

    public function setId($id)
    {
        $this->id = $id;
    }
    
    public function getDataInscricao()
    {
        return $this->data_inscricao;
    }

    public function setDataInscricao($data_inscricao)
    {
        $this->data_inscricao = $data_inscricao;
    }
    public function getNomeCompleto()
    {
        return $this->nomeCompleto;
    }

    public function setNomeCompleto($nomeCompleto)
    {
        $this->nomeCompleto = $nomeCompleto;
    }
    
    public function getNascimento()
    {
        return $this->nascimento;
    }

    public function setNascimento($nascimento)
    {
        $this->nascimento = $nascimento;
    }
    public function getNacionalidade()
    {
        return $this->nacionalidade;
    }

    public function setNacionalidade($nacionalidade)
    {
        $this->nacionalidade = $nacionalidade;
    }
    
    public function getSexo()
    {
        return $this->sexo;
    }

    public function setSexo($sexo)
    {
        $this->sexo = $sexo;
    }
    public function getEstadoNascimento()
    {
        return $this->id_estado_nascimento;
    }


Bom essa é a base q eu altero pra ele gravar no banco.

1) onde colocaria pra enviar pra segunda tabela, um novo insert?
2) Onde colocaria a funcção pra salvar o upload do input file?
Responder

04/11/2017

Bot47

Na minha opinião sim, seriam dois inserts.
Tanto o insert quanto o input file acredito que seria dps do
$funcionarioDAO->salvar($Funcionario);

Para recuperar o arqv tente a variável global do PHP: $_FILES
Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar