1
resposta

Alterar Produto deixou de funcionar

Olá boa noite. Depois que realizei as mudanças no código de alterar produto, meu sistema parou de funcionar retornando a mensagem de não alteração do produto. O que poderia ser? Segue meu código:

<?php require_once("cabecalho.php");
      require_once("banco-produto.php");
      require_once("class/Produto.php");
      require_once("class/Categoria.php");

    //instância do objeto Categoria : realizar o link entre o objeto produto e o categoria
    $categoria = new Categoria();
    $categoria->setId($_POST['categoria_id']);

    //variaveis
    $nome = $_POST["nome"];
    $preco = $_POST["preco"];
    $descricao = $_POST['descricao'];


    if(array_key_exists('usado',$_POST)){
        $usado = "true";
    }else{
        $usado = "false";
    }
    //variaveis

    //Instância do Objeto produto
    $produto = new Produto($nome,$preco,$descricao,$categoria,$usado);

    if(alteraProduto($conexao,$produto)){ //mysqli é o novo pacote de gerência de DB dentro do php?>

    <p class="text-success">Produto <?php echo $produto->getNome(); ?> com preço igual à <?php echo $produto->getPreco();?> foi alterado com sucessso! </p>

    <?php 
    }else{
        $msg = mysqli_error($conexao);    
    ?>
    <p class="alert-danger">O produto <?= $produto->getNome()?> não foi modificado <? $msg ?></p> 

    <?php 
    }


     require_once("rodape.php");?>

///////////////////////////////////////////////////////////////

Banco-produto.php

function alteraProduto($conexao,Produto $produto){

        $query = "update produtos set nome = '{$produto->getNome()}', preco = {$produto->getPreco()}, 
            descricao = '{$produto->getDescricao()}', categoria_id = {$produto->getCategoria()->getId()}, 
            usado = {$produto->getUsado()} where id = {$produto->getId()}";
        $resultado = mysqli_query($conexao,$query);
        return $resultado;
    }
1 resposta

Oi Caique, tudo bom?

Se está caindo na mensagem de não atualizado é porque a query não está correta, ou os dados passados estão quebrando a query. Verifica, exatamente, o que a gente ta executando:

function alteraProduto($conexao,Produto $produto){

        $query = "update produtos set nome = '{$produto->getNome()}', preco = {$produto->getPreco()}, 
            descricao = '{$produto->getDescricao()}', categoria_id = {$produto->getCategoria()->getId()}, 
            usado = {$produto->getUsado()} where id = {$produto->getId()}";
    var_dump($query);die();
        $resultado = mysqli_query($conexao,$query);
        return $resultado;
    }

Além disso, compartilha com a gente sua classe Produto, as vezes passou algum detalhe no construtor =)

Abraço

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software