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

Aula 4, lição 9. Só lista o primeiro produto

Alterei a função listaProduto encapsulando como solicitado no exercício, mas após a modificação, quando vou listar os produtos só vem um produto apenas. Abaixo mando o meu código:

banco-produto.php

function listaProdutos($conexao){
    $produtos=array();
    $resultado = mysqli_query($conexao, "select p.*,c.nome as categoria_nome from produtos as p join categorias as c on c.id=p.categoria_id");
    while($produto_array = mysqli_fetch_assoc($resultado)){

        $produto = new Produto();
        $categoria = new Categoria();
        $categoria->setNome($produto_array['categoria_nome']);

        $produto->setId($produto_array['id']);
        $produto->setNome($produto_array['nome']);
        $produto->setPreco($produto_array['preco']);
        $produto->setDescricao($produto_array['descricao']);
        $produto->setCategoria($categoria);
        $produto->setUsado($produto_array['usado']);
        array_push($produtos, $produto);
    }
    return $produtos;
}
4 respostas

Oi Andrei, todos os seus produtos batem com o join que você está fazendo? ou seja, todos possuem um categoria_id e esse categoria_id exite na tabela de categorias?

Então, meu problema não é no banco de dados, meu problema é justamente sobre a Aula 4, lição 9 do curso PHP I: Orientação a objetos com sua linguagem preferida. Meu site funcionava normalmente, listando todos os produtos. Depois que eu fiz o exercício da aula em questão que deu o problema. Obrigado

solução!

Resolvido! No arquivo produto.php escrevi uma das funções do id errada. Tinha colocado:

public function getIp){
        return $this->id;
    }

Coloquei "etIp" e não "etId". O correto é:

public function getId(){
        return $this->id;
    }

Puxa, desculpa a demora Andrei, vou tentar ser mais ágil na próxima. Fico feliz que tenha resolvido. Um abraço!