3
respostas

Não Lista o ISBN

O ISBN é adicionado no banco de dados mas não consigo listar ele:

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

?>



<table class="table table-striped table-bordered">
    <?php
        $produtos = listaProdutos($conexao);
        foreach($produtos as $produto) :
    ?>
    <tr>
        <td><?= $produto->getNome() ?></td>
        <td><?= $produto->getPreco() ?></td>
        <td><?= $produto->valorComDesconto(0.1) ?></td>
        <td><?= substr($produto->getDescricao(), 0, 40) ?></td>
        <td><?= $produto->getCategoria()->getNome() ?></td>

        <td>
            <?php
            if($produto->temIsbn()){
                echo "ISBN: " . $produto->getIsbn();
            }
            ?>
        </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-danger">remover</button>
            </form>
        </td>
    </tr>
    <?php
        endforeach
    ?>    
</table>        


<?php include("rodape.php"); ?>
function listaProdutos() {
        $produtos = array();
        $resultado = mysqli_query($this->conexao, "select * from produtos");
        while($array = mysqli_fetch_assoc($resultado)) {
            if (trim($array['isbn'])!=="") {
                $produto = new Livro();
                $produto->setIsbn($array['isbn']);
            } else {
                $produto = new Produto();
            }
            $produto->setId($array['id']);
            $produto->setNome($array['nome']);
            $produto->setDescricao($array['descricao']);
            $produto->setPreco($array['preco']);
            $produto->setCategoriaId($array['categoria_id']);
            $produto->setUsado($array['usado']);
            array_push($produtos, $produto);
        }
        return $produtos;
    }
3 respostas

Como está a sua função temIsbn da classe produto?

public function temIsbn(){
        return $this instanceof Livro;
    }

Oi Otto, tudo bem? Você não está setando o ISBN na sua função listaProdutos(). Você esté setando tudo, como por exemplo o ID ($produto->setId($array['id']);), mas não está setando o ISBN. Poderia ser algo do tipo: $produto->setIsbn($array['isbn']);

Faça o teste :)Lembre-se que o método setIsbn() e o getIsbn() devem estar na classe Livro.