edinhorod 0 Denunciar post Postado Fevereiro 18, 2015 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