3
respostas

Produto-lista não lista todos os produtos do banco.

Olá pessoal, quando acesso o produto lista ele só lista os dados novos os antigos ele não lista.

<?php 
// require_once 'class/Categoria.php';
require_once 'class/Produto.php';
require_once 'cabecalho.php'; 
// require_once 'conecta.php';
require_once 'banco-produto.php';
require_once 'logica-usuario.php';

verificaUsuario();
$produtos = listaProdutos($conexao);
?>
<h1>Lista produtos</h1>
<table class="table table-striped table-bordered">
        <tr>
            <td class="text-center">Nome</td>
            <td class="text-center">Preço</td>
            <td class="text-center">Desconto</td>
            <td class="text-center">Descrição</td>
            <td class="text-center">Categoria</td>            
            <td class="text-center">Alterar</td>
            <td class="text-center">Remover</td>
        </tr>
        <?php        
        foreach ($produtos as $produto) :
        var_dump($produto);             
        ?>                    
            <tr>            
                <td><?= $produto->getNome() ?></td>
                <td><?= $produto->getPreco() ?></td>                
                <td><?= $produto->valorComDesconto() ?></td>
                <td><?= substr($produto->getDescricao(),0, 15)?></td>
                <td><?= $produto->getCategoria() ?></td>
                <td>
                    <a class="btn btn-primary" href="produto-altera-formulario.php?id=<?=$produto->getId()?>">alterar</a>
                </td>
                <td>
                    <form action="remove-produto.php" method="post">
                        <input type="hidden" name="id" value="<?=$produto->getId()?>">
                        <button class="btn btn-primary">remover</button>
                    </form>

                </td>
            </tr>    

    <?php endforeach ?>
    </table>
<?php require_once 'rodape.php'; ?>
3 respostas

Oi Roberto, olhando o código não parece fazer sentido mesmo... Como está o arquivo banco-produto.php? Pode ser que seja alguma coisa errada na query.

Olhei o banco e reparei que o categoria_id estava desse jeito,

61, Livro de php,Livro de php avançado,60.00,74,0

alguma coisa que eu fiz e não sei porque ele alterou o categoria_id do banco.

banco-produto.php

<?php 
require_once 'class/Categoria.php';
require_once 'class/Produto.php';
require_once 'conecta.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 p.categoria_id = c.id"); 
        while($produto_atual = mysqli_fetch_assoc($resultado)) {

            $categoria = new Categoria();
            $categoria->setNome($produto_atual['categoria_nome']);

            $produto = new Produto($produto_atual['nome'],$produto_atual['preco'],$produto_atual['descricao'],$categoria,$produto_atual['usado']);

            $produto->setId($produto_atual['id']);

            array_push($produtos, $produto);
            echo $produto;
        }
        return $produtos;
    }

function insereProduto($conexao,Produto $produto) {    
    $query = "insert into produtos (nome,preco,descricao,categoria_id,usado) values ('{$produto->getNome()}', {$produto->getPreco()}, '{$produto->getDescricao()}', {$produto->getCategoria()}, {$produto->getUsado()})";        
    echo($query);    
    return mysqli_query($conexao, $query);     
}

function removeProduto($conexao, $id) {
    $query = "delete from produtos where id = {$id}";
    return mysqli_query($conexao, $query);
}

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

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

Bom, não vi nada de errado na sua query... Vamos ver se alguém consegue achar alguma coisa.