Ir para conteúdo
Fórum Script Brasil
  • 0

MVC: a compra de um repolho na quitanda


Frank K Hosaka

Pergunta

Eu levei cinco horas para montar o código a seguir. Eu recebi várias mensagens de erro, muitos eram familiares mas não sabia do que se tratava. O mais enigmático é que eu não podia usar a variável $_SESSION junto com o motor de banco de dados. Depois de várias tentativas e erros, acabei descobrindo que todos os erros eram gramaticais, usei o recurso do PHP aonde não devia.

O grande problema do MVC é criar um controlador para cada tabela do banco de dados. Isso não é fácil, principalmente quando eu preciso de uma informação numa tabela que está disponível em outra tabela. Para criar uma ponte entre os controladores, eu usei a variável $_SESSION, assim:

<?php
session_start();
class Produto {
    public function incluir() {
        $lcto=$_SESSION['lcto'];
        $codprod=1;$qt=1;$subtotal=1;
        $pdo=new PDO("mysql:host=localhost;dbname=laravel","root","");
        $pdo->query("insert into tbhistprod (lcto,codprod,qt,subtotal) 
            values ($lcto,$codprod,$qt,$subtotal)");}}
class Diario {
    public function incluir() {
        $contad=123;$contac=121;$valor=10;$historico='Compra de um repolho na quitanda';
        $pdo=new PDO("mysql:host=localhost;dbname=laravel","root","");
        $pdo->query("insert into tbdiario (contad,contac,valor,historico) values 
            ($contad,$contac,$valor,'$historico')");
        $_SESSION['lcto']=$pdo->lastInsertId();
        $produto=new Produto();
        $produto->incluir();}}
$diario=new Diario();
$diario->incluir();

Olhando o código, o mais sensato era colocar o número do lançamento como parâmetro da função e não como variável global $_SESSION. O problema são os formulários, um vai pegar as contas, o outro vai pegar os produtos, e depois de várias submissões, tudo o que estava no caminho se perde no Vale das Sombras.

Outra coisa bacana que aprendi com o MVC é a barra de endereço do navegador. Lá aparece o nome do controlador. No caso de uma submissão de um formulário, o PHP vai carregar o controlador que estiver na barra de endereço, assim decidi não usar a propriedade action do <form>, mas sim preparar o controlador para receber a submissão.

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...