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

Dúvida no Ex. 5 da Aula 2 - Evoluindo a listagem de produtos

Ao fazer tal alteração pedidda no exercicio é informado um erro.

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\loja\banco-produto.php on line 43

banco-produto.php

function buscaProduto($conexao, $produto) {
    $query = "select * from produtos where id = {$produto->id}";
    $resultado = mysqli_query($conexao, $query);
    return mysqli_fetch_assoc($resultado);
}

produto-altera-formulario.php

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

$id = $_GET['id'];
$produto = buscaProduto($conexao, $produto);
$categorias = listaCategorias($conexao);
$usado = $produto['usado'] ? "checked='checked'" : ""; 

?>


<h1>Alterando Produto</h1>   
    <form action="altera-produto.php" method="post">
        <input type="hidden" name="id" value="<?=$produto['id']?>">
        <table class="table">
        <?php include("produto-formulario-base.php");?>
            <tr>
               <td>
                   <input class="btn btn-primary" type="submit" value="Alterar">
               </td>
            </tr>
        </table> 
    </form>


<?php include("rodape.php"); ?>
2 respostas
solução!

E aí Leonardo.

Isso aconteceu porque no método buscaProduto($conexao, $produto); você passou o objeto $produto porém ele não foi instanciado e, mesmo que tivesse sido você deveria passar o valor de $_GET['id'] para o atributo $id do objeto $produto.

Certo então vamos lá:

  • Primeiro:

Vamos instanciar o objeto $produtos. No código de 'produto-altera-formulario.php' logo abaixo da linha 5

' require_once("banco-produto.php") ; '

você deve digitar:

$produto = new Produto();

*Segundo

Na linha 6 do seu código você criou uma variável $id que recebe o valor de $_GET:

$id = $_GET['id'];

O certo é você passar o valor de $_GET para o atributo $id do objeto $produto. Então ao invés disso você deve digitar:

$produto->id = $_GET['id'];

Bom por enquanto é isso. Testa aí e depois dá um retorno pra gente saber se seu certo.

Aguardo retorno...

Obrigado pela ajuda Funcionou corretamente

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