Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

incluir em 2 tabelas no Mysql

Olá pessoal, estou inserindo o honorário_id na tabela caso mas não consigo enviar o numero do id_honorarios correto para tabela caso. Ele sempre mostra 0 como resultado. Estou tentando fazer desta forma :.

banco-honorarios (na função insereHonorariosavista)

function insereHonorariosavista($conexao, $honorarios) {
    $query = "insert into honorarios (valor, data_pagamento, caso_numero,
     forma_pagamento_id, situacao_id) values ({$honorarios->getValor()},
    {$honorarios->getData_pagamento()}, {$honorarios->getCaso_numero()},
    {$honorarios->getForma_pagamento()->getId()},{$honorarios->getSituacao()->getId()})";

    $id_honorarios = mysqli_insert_id($conexao);

   $query="update caso set honorarios_id = {$id_honorarios}
    where numero = {$honorarios->getCaso_numero()} ";

   var_dump($query);exit;

   return mysqli_query($conexao, $query);
}

me parece que o mysqli_insert_id() não está puxando o id do honorario inserido porque o resultado teria que ser 1 logo após a inserção e retorna id=0 este é o var dump :

update caso set honorarios_id = 0 where numero = 3

insere-honorarios

<?php
require_once 'conecta.php';
require_once 'banco-honorarios.php';
require_once 'honorarios.php';
require_once 'caso.php';
require_once 'pessoa.php';
require_once 'resolucao.php';
require_once 'forma_pagamento.php';
require_once 'situacao.php';

$honorarios = new honorarios();
$honorarios->setValor( $_POST['valor'] );
$honorarios->setData_pagamento( $_POST['data_pagamento'] );
$honorarios->setCaso_numero( $_POST['caso_numero'] );
$honorarios->setForma_pagamento(new Forma_pagamento());
$honorarios->getForma_pagamento()->setId( $_POST['forma_pagamento_id'] );
$honorarios->setSituacao(new Situacao());
$honorarios->getSituacao()->setId( $_POST['situacao_id'] );
//var_dump($honorarios);exit;

if(insereHonorariosavista($conexao, $honorarios)) { 
?>
<?php header('Location: conclusao.php'); ?>
</p>
<?php
} else {
$msg = mysqli_error($conexao);
?>
<p class="text-danger">O honorario de R$ <?=$honorarios->getValor() ?>
não foi aadicionado: <?= $msg?></p>
<?php
}
require_once 'rodape.php';
?>
3 respostas

Como está definida a tabela honorarios? o campo ID é chave primária e está autoincremento?

Olá Francisco sim a tabela honorários está configurada como auto incremento e chave primária na coluna ID

solução!

Olá pessoal segue a solução: Colocar uma condicional if dento da função insereHonorariosavista

function insereHonorariosavista($conexao, $honorarios) {
    $query = "insert into honorarios (valor, data_pagamento, caso_numero,
     forma_pagamento_id, situacao_id) values ({$honorarios->getValor()},
    {$honorarios->getData_pagamento()}, {$honorarios->getCaso_numero()},
    {$honorarios->getForma_pagamento()->getId()},{$honorarios->getSituacao()->getId()})";
//este é o if responsável por atualizar a tabela caso:
    if (mysqli_query($conexao, $query)) {
        $id_honorarios = mysqli_insert_id($conexao);
        $query = "update caso set honorarios_id = {$id_honorarios}
        where numero = {$honorarios->getCaso_numero()} ";

        return mysqli_query($conexao, $query);
    }
}