Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não aparece as opções da Categoria.

Pessoal, eu tentei fazer a função listarCategoria() orientado a objeto, porém não é exibido nenhuma opção no campo selected, fica em branco. E isso acontece tanto no formulário para adicionar um produto, como no formulario para editar.

Se alguém puder me auxiliar ficarei bastante grato. O código segue abaixo:

banco-categoria.php

<?php
require_once("conecta.php");
require_once("class/categoria.php");

function listarCategoria($conexao){
    $categorias = array();
    $categoria = new Categoria();
    $query = "select * from categoria";
    $resultado = mysqli_query($conexao, $query);
    while($categoria_banco = mysqli_fetch_assoc($resultado)){
        $categoria->id = $categoria_banco['id'];
        $categoria->nome = $categoria_banco['nome'];
        array_push($categorias, $categoria);
    }
    return $categorias;
}

formulario-base.php

<tr>
                <td>Nome</td>
                <td><input type="text" name="nome"  class="form-control" value="<?=$produto->nome?>"/></td>
            </tr>

            <tr>
                <td>Preço</td>
                <td><input type="number" name="preco" class="form-control" value="<?=$produto->preco?>"/></td>
            </tr> 
            <tr>
                <td>Descrição</td>
                <td><textarea name="descricao" class="form-control"><?=$produto->descricao?></textarea></td>
            </tr>
            <tr>
            <td>Usado</td>
                <td><input type="checkbox" name="usado" <?= $produto->usado ?> value="false"></td>
            </tr>
            <tr>
                <td>Categoria</td>
                    <td>
                        <select name="categoria_id">

                        <?php 
                        $categorias = listaCategorias($conexao);
                        foreach($categorias as $categoria) : ?>
                            <option value="<?=$categoria->id?>">
                                <?=$categoria->nome?>
                            </option>
                        <?php endforeach ?>
                        </select>
                    </td>
            </tr>

formulario-produto.php


<?php require_once("cabecalho.php");
require_once("banco-categoria.php");
require_once("logica-usuario.php");

verificaUsuario();

$produto = array("nome" => "" , "preco" => "" , "descricao" => "" , "categoria_id" => "1", $usado = "");
//$usado = "";
$categorias = listarCategoria($conexao);
?>
           <h1>Adiciona Produto</h1>
            <html>
    <form action="adiciona-produto.php" method="post">
        <table class="table">
            <?php include("formulario-base.php")?>
            <tr>
                <td><input type="submit" value="Cadastrar"class="btn btn-primary"/></td>
            </tr>

        </table>

    </form>
</html>
<?php include("rodape.php") ?>

Formulario-editar-produto.php

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

$produto = new Produto();

$produto->id= $_GET['id'];

$produtos = buscarProduto($conexao, $produto);
$categorias = listarCategoria($conexao);
$produto->usado = $usado ? "checked='checked'" : "";
?>
           <h1>Adiciona Produto</h1>
            <html>
    <form action="alterar-produto.php" method="post">
        <input type="hidden" name="id" value="<?=$produto->id?>">
        <table class="table">

            <?php include("formulario-base.php")?>
            <tr>
                <td><input type="submit" value="Alterar" class="btn btn-primary"/></td>
            </tr>

        </table>

    </form>
</html>
<?php include("rodape.php") ?>
1 resposta
solução!

Para os que talvez venham a ter o mesmo erro, no meu caso foi apenas a variavel:

 $categoria = new Categoria();

Que foi criada antes do while.