2
respostas

Popular e alterar dados

Preciso de ajuda para entender o que está acontecendo e corrigir meu código: Duvida: Tenho que buscar um dado no BD 'resumo' , apresentar ao cliente e caso ele corrija o resumo alterar no BD. Eu consigo passar a query pelo formulário esse é o var dump da query:

string(37) "SELECT * FROM `caso` WHERE numero = 3"

mas não estou conseguindo devolver o resultado o campo resumo está em branco, não exibe o retorno que é o campo 'resultado' e é só o resultado que preciso exibir na página consulta.php embora no BD o caso seja composto por vários campos 'numero'', 'perfil_id', 'resumo', 'pessoa_id', 'data_atendimento', 'natureza', 'resolucao_id', 'honorarios_id', 'forma_pagamento_id'.

Seguem arquivos: consulta.php

//a inclusão está funcionando
<?php
$caso = new Caso();
$ehAlteracao = false;
$action = "php/adiciona-resumo-caso.php";
$id="<?=$ultimo?>";

//aqui o problema na busca:

if (array_key_exists('id', $_GET)) {
  $id = $_GET['id'];
//echo ($id); //Aviso de teste
$caso = buscaResumocaso($conexao, $id);
//echo ($caso); //Aviso de teste
//var_dump($caso);exit;
$ehAlteracao = true;
$action = "php/altera-resumo-caso.php";
}
?>

banco-caso

function buscaResumocaso($conexao, $id) {
    $query = "SELECT * FROM `caso` WHERE numero = {$id}"; 
       //var_dump ($query);exit;
    $resultado = mysqli_query($conexao, $query);
    $array = mysqli_fetch_assoc($resultado);

    $caso = new Caso();
    $caso->setId( $array['id'] );
    $caso->setNumero( $array['numero'] );
    $caso->setPerfil( new perfil() );
    $caso->getPerfil()->setId( $array['perfil_id'] );
    $caso->getPerfil()->setNome( $array['perfil_nome'] );
    $caso->setResumo( $array['resumo'] );
    $caso->setPessoa( new Pessoa() );
    $caso->getPessoa()->setId( $array['pessoa_id'] );
    $caso->getPessoa()->setNome( $array['pessoa_nome'] );
    $caso->setData_atendimento( $array['data_atendimento'] );
    $caso->setNatureza( $array['natureza'] );
    $caso->setResolucao( new Resolucao() );
    $caso->getResolucao()->setId( $array['resolucao_id'] );
    $caso->getResolucao()->setNome( $array['resolucao_nome'] );
    $caso->setHonorarios( new Honorarios() );
    $caso->getHonorarios()->setId( $array['honorarios_id'] );
    $caso->getHonorarios()->setNome( $array['honorarios_nome'] );
    $caso->setForma_pagamento( new Forma_pagamento() );
    $caso->getForma_pagamento()->setId( $array['forma_pagamento_id'] );
    $caso->getForma_pagamento()->setNome( $array['forma_pagamento_nome'] );

    return $caso;
}

arquivo altera-resumo-caso.php

<?php

$caso = new Caso();
$caso->setId($_POST["id"]);
$caso->setNumero( $_POST['numero']);
$caso->setPerfil(new Perfil());
$caso->getPerfil()->setId( $_POST['perfil_id'] );
$caso->setResumo($_POST["resumo"]);
$caso->setPessoa(new Pessoa());
$caso->getPessoa()->setId( $_POST['pessoa_id'] );
$caso->setData_atendimento( $_POST['data_atendimento']);
$caso->setNatureza( $_POST['natureza']);
$caso->setResolucao(new Resolucao());
$caso->getResolucao()->setId( $_POST['resolucao_id'] );
$caso->setHonorarios(new Honorarios());
$caso->getHonorarios()->setId( $_POST['honorarios_id'] );
$caso->setForma_pagamento(new Forma_pagamento());
$caso->getForma_pagamento()->setId( $_POST['forma_pagamento_id'] );

var_dump($caso);exit;

if(alteraResumocaso($conexao, $caso)) { ?>
      <script type="text/javascript">
          setTimeout(function(){window.location="../relatorio-caso.php"} , 10000);
          </script>
      <p class="text-success">
      O caso <?=$caso->getNumero() ?> foi alterado.
      </p>
2 respostas

Sérgio, boa tarde!

Muito interessante, tente verificar se o retorno da mysqli_fetch_assoc($resultado) está retornando uma array ou se retorna nulo, caso ele esteja retornando nulo, verifique se os campos estão com nome iguais, pois esse comando é case_sensitive.

E uma dica muito importante, tente rodar esse comando

SELECT * FROM `caso` WHERE numero = 3

Diretamente no banco de dados e verifique se ele funciona

Caso ainda esteja encontrando problemas, compartilhe com a gente seu projeto via github! Estamos aqui para ajudar!

Continue assim e bons estudos!

Muito obrigado pelo seu retorno Felipe segue retorno do $resultado:

object(mysqli_result)#4 (5) { ["current_field"]=> int(0) ["field_count"]=> int(10) ["lengths"]=> array(10) { [0]=> int(2) [1]=> int(1) [2]=> int(1) [3]=> int(5) [4]=> int(0) [5]=> int(0) [6]=> int(0) [7]=> int(0) [8]=> int(0) [9]=> int(0) } ["num_rows"]=> int(1) ["type"]=> int(0) }

E o retorno na pagina consulta.php é esse:

Notice: Undefined index: perfil_nome in C:\Bitnami\wampstack-7.1.13-1\apache2\htdocs\mvpbx\php\banco-caso.php on line 56

Notice: Undefined index: pessoa_nome in C:\Bitnami\wampstack-7.1.13-1\apache2\htdocs\mvpbx\php\banco-caso.php on line 60

Notice: Undefined index: resolucao_nome in C:\Bitnami\wampstack-7.1.13-1\apache2\htdocs\mvpbx\php\banco-caso.php on line 65

Fatal error: Uncaught Error: Call to undefined method Honorarios::setNome() in C:\Bitnami\wampstack-7.1.13-1\apache2\htdocs\mvpbx\php\banco-caso.php:68 Stack trace: #0 C:\Bitnami\wampstack-7.1.13-1\apache2\htdocs\mvpbx\consulta.php(32): buscaResumocaso(Object(mysqli), '3') #1 {main} thrown in C:\Bitnami\wampstack-7.1.13-1\apache2\htdocs\mvpbx\php\banco-caso.php on line 68

Quando rodo a query direto no banco funciona!! :

SELECT * FROM `caso` WHERE numero = 3

retorno é o caso cujo numero é igual a 3 . Perfeito sem problemas.