Bom dia, agradeceria ajuda.. No curso FP-73 existe um topico com referencia a criação de uma listagem de produtos. Conseguimos exibir todos os produtos constantes no Banco. Mudando um pouco esse exercício, eu gostaria de criar uma Listagem de produtos tendo como base uma categoria escolhida. No nosso caso, a partir da pagina de Formulário de Produto que mostra as categorias: Esporte, Escolar, Mobilidade.
produto-lista do FP-73
<?php include "cabecalho.php"; ?>
<?php include "conecta.php"; ?>
<?php include "banco-produto.php"; ?>
<?php include "produto.php"; ?>
<?php include "categoria.php"; ?>
<?php
require_once "logica-usuario.php";
require_once 'autoload.php';
verificaUsuario();
?>
Usuário logado: <?=usuarioLogado() ?>
<?php if (array_key_exists('removido', $_GET) && $_GET['removido'] == true) { ?>
<p class="alert-success">Produto removido com sucesso.</p>
<?php } ?>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th class="text-center">Nome</th>
<th class="text-center">Preço</th>
<th class="text-center">Preço com Desconto</th>
<th class="text-center">Descrição</th>
<th class="text-center">Categoria</th>
<th class="text-center" colspan="2">Ações</th>
</tr>
</thead>
<?php
$dao = new ProdutoDAO($conexao);
$produtos = $dao->listaProdutos();
foreach ($produtos as $produto) :
?>
<tr>
<td><?=$produto->getNome() ?></td>
<td><?=$produto->getPreco() ?></td>
<td><?=$produto->subtraiDesconto(0.1) ?></td>
<td><?=substr($produto->getDescricao(), 0, 40) ?> ...</td>
<td><?=$produto->getCategoria()->getNome() ?></td>
<td class="text-center">
<form method="post" action="remove-produto.php">
<input type="hidden" name="id" value="<?=$produto->getId() ?>">
<button class="btn btn-danger" type="submit">Remover</button>
</form>
</td>
<td class="text-center">
<form method="get" action="produto-formulario.php">
<input type="hidden" name="id" value="<?=$produto->getId() ?>">
<button class="btn btn-primary" type="submit">Alterar</button>
</form>
</td>
</tr>
<?php
endforeach
?>
</table>
<?php include "rodape.php"; ?>
Classe produto na função de listaProduto:
class ProdutoDAO
{
private $conexao;
function __construct($conexao) {
$this->conexao = $conexao;
}
function listaProdutos()
{
$produtos = array();
$resultado = mysqli_query($this->conexao,
"select p.*, c.nome as categoria_nome from produtos as p "
. "join categorias as c on p.categoria_id = c.id");
while($array = mysqli_fetch_assoc($resultado)) {
$produto = new Produto();
$produto->setId($array['id']);
$produto->setNome($array['nome']);
// outros campos omitidos
// relacionando com categoria
$produto->setCategoria(new Categoria());
$produto->getCategoria()->setId($array['categoria_id']);
$produto->getCategoria()->setNome($array['categoria_nome']);
array_push($produtos, $produto);
}
return $produtos;
}