Boas Pessoal,
Após efectuar alteração na classe produto, para contemplar o método construtor, não consigo listar os produtos, esta a devolver o erro:
Fatal error: Uncaught Error: Call to a member function getNome() on null in C:\xampp\htdocs\loja\produto-lista.php:18 Stack trace: #0 {main} thrown in C:\xampp\htdocs\loja\produto-lista.php on line 18
ficheiro:
produto-lista.php
<?php
require_once("cabecalho.php");
require_once("banco-produto.php");
?>
<table class="table table-striped table-bordered">
<?php
$produtos = ListaProdutos($conexao);
var_dump($produto);
foreach ($produtos as $produto) :?>
<tr>
<td><?= $produto->getNome(); ?> </td>
<td><?= $produto->getPreco(); ?></td>
<td><?= $produto->precoComDesconto(); ?></td>
<td><?= substr($produto->getDescricao(), 0,40); ?></td>
<td><?= $produto->getCategoria(); ?></td>
<td><?= $produto->getUsado(); ?></td>
<td><a class="btn btn-primary" href="produto-altera-formulario.php?id=<?= $produto->getId(); ?>">Alterar</a></td>
<td>
<form method="post" action="remove-produto.php">
<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"); ?>
função listarProduto:
//Listar produtos
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.categoriaId =c.id");
while ($produto_array = mysqli_fetch_assoc($resultado)) {
//Criar produto
$categoria = new Categoria();
$categoria->setNome ($produto_array ['categoria_nome']);
//Adicionar produtos na arrey de produtos
array_push($produtos, $produto);
//Instanciais os atributos da classa produto
$nome = $produto_array ['nome'];
$preco = $produto_array ['preco'];
$descricao = $produto_array ['descricao'];
//$categoria = $categoria->getNome () ;
$usado = $produto_array ['usado'];
//Criar produto
$produto = new Produto($nome, $preco, $descricao, $categoria, $usado);
$produto->setId ($produto_array ['id']);
//echo $produto ['nome'] . "<br/>" ;
}
return $produtos;
}
Podem por favor ajudar?
Tks