Ir para conteúdo

Arquivado

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

edinhorod

Função para gravar em duas tabelas

Recommended Posts

Olá pessoal, meu problema é o seguinte: Estou fazendo um sistema em PHP OO para gravação de pedido, com carrinho de compras. O cliente escolhe os produtos e ele grava os dados primeiro no carrinho de compra. Até aí, tudo bem. Depois que o cliente terminou de selecionar os produtos, ele fecha o pedido. Nesse momento tenho que gravar os dados na tabela Venda e Itens_venda. Estou tentando fazer uma função que grave a venda e os itens de uma só vez.

Para fazer uma gravação simples, eu uso a seguinte função:

public function gravarItem($carrinho) {
        $banco = new Banco();
        $banco->setComandoSQL("INSERT INTO carrinho(cli_cod, pro_cod, pro_valor, data, qtde, total)
                                VALUES
                                ('" . $carrinho->getCli_cod() . "', 
                                    '" . $carrinho->getPro_cod() . "', 
                                        '" . $carrinho->getPro_valor() . "',
                                            '" . $carrinho->getCar_data() . "',
                                        '" . $carrinho->getQtde() . "', 
                                            '" . $carrinho->getTotal() . "')");
        if ($banco->ExecutaSQL()) {
            return (true);
        } else {
            return (false);
        }
    }

Para gravar nas duas tabelas ao mesmo tempo, tentei fazer a função assim (mas não funcionou):

public function gravarPedido($ped, $car) {
        $banco = new Banco();
        $banco->setComandoSQL("INSERT INTO pedido (ped_cli_cod, ped_data, ped_total)
                                VALUES
                                ('" . $ped->getPed_cli_cod() . "', '" . $ped->getPed_data() . "', 
                                    '" . $ped->getPed_total() . "')");
        $banco->setComandoSQL("SELECT LAST_INSERT_ID() INTO @ped_cod;");

        $banco->setComandoSQL("INSERT INTO itens_pedido (pro_cod, qtde, valor_unit)
                                VALUES
                                (@ped_cod, '" . $car->getIt_qtde() . "', '" . $car->getIt_valor_unit() . "')");

        if ($banco->ExecutaSQL()) {
            return true;
        } else {
            return false;
        }
    }

E passei os dados assim:

if (isset($_POST["fechar"])) {
    $cli_cod = $util->protect($_POST["cli_cod"]);
    $ped_data = Date('Y-m-d');
    $ped_total = $total;
    $ped = new Pedido();
    $ped->setPed_cli_cod($cli_cod);
    $ped->setPed_data($ped_data);
    $ped->setPed_total($ped_total);
    $car = $carDao->listarCarrinhoDeUmCliente($cli_cod);

    foreach ($carrinho as $car) {
      $qt = $car->getQtde();
      $vl_unt = $car->getPro_valor();

      $ped = new Pedido();
      $ped->setPed_cli_cod($cli_cod);
      $ped->setPed_data($ped_data);
      $ped->setPed_total($ped_total);
      $ped->setIt_qtde($car->getQtde());
      $ped->setIt_valor_unit($car->getPro_valor());
      } 

    if ($pedDAO->gravarPedido($ped, $car)) {
        $msg2->addMensagem("<div class=\"alert alert-success\">
      <strong>Feito!</strong> Pedido Gravados com Sucesso.
      </div>");
    } else {
        $msg2->addMensagem("<div class=\"alert alert-danger\">
      <strong>Atenção</strong> Erro Ao Gravar Pedido
      </div>");
    }
}

Alguém sabe como fazer isso?

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.