Nos exercícios da aula 8 é proposto para alterarmos o arquivo banco-produto.php e banco-categoria.php para um DAO. Alterei o banco-produto, e aparentemente está ok. Mas estou tendo um problema na inserção de novos dados.
Quando chamo a página produto-formulario.php, o select que continha as categorias está vindo vazio. Não consigo mais mostrar o nome das categorias.
segue o código do select no produto-formulario-base.php
<select class="form-control" name="categoria_id">
<?php foreach($categorias as $categoria) :
$essaEhaCategoria = $produto->getCategoria()->getId() == $categoria->getId();
$selecao = $essaEhaCategoria ? "selected='selected'" : ""?>
<option value="<?=$categoria->getId()?>" <?=$selecao?>> <?=$categoria->getNome()?></option>
<?php endforeach ?>
</select>
Aqui está o código do produto-formulario.php
$categoria = new Categoria();
$categoria->getId();
$categoria->getNome();
if(array_key_exists('usado', $_POST)){
$usado = "true";
} else {
$usado = "false";
}
$produto = new Produto($_POST['nome'], $_POST['preco'], $_POST['descricao'], $categoria, $usado);
$categoriaDAO = new categoriaDAO($conexao);
$categorias = $categoriaDAO->listaCategorias();
?>
<h1>Formulário de cadastro de produtos</h1>
<form action="adiciona-produto.php" method="post">
<table class="table">
<?php include ("produto-formulario-base.php");?>
<tr>
<td><button class="btn btn-primary" type="submit">Cadastrar</td>
</tr>
</table>
</form>
<?php include("footer.php");?>
e por fim minha categoriaDAO.php
class categoriaDAO{
private $conexao;
function __construct($conexao)
{
$this->conexao = $conexao;
}
function listaCategorias(){
$categorias = [];
$query = "select * from categorias";
$resultado = mysqli_query($this->conexao, $query);
while($categoria_atual = mysqli_fetch_assoc($resultado)){
$categoria = new Categoria();
$categoria->setId($categoria_atual['categoria_id']);
$categoria->setNome($categoria_atual['categoria_nome']);
array_push($categorias, $categoria);
}
return $categorias;
}
}