Neste formulário, o include("produto-formulario-base.php"); chama as duas variáveis mencionadas. E como explicado no curso, elas deveriam ser criadas para a tela abrir normalmente e com os campos vazios, como nas duas linhas comentadas no código abaixo:
<?php
include("cabecalho.php");
include("conecta.php");
include("banco-categoria.php");
include("logica-usuario.php");
verificaUsuario();
#$produto = array("nome" => "", "descricao" => "", "preco" => "", "categoria_id" => "1");
#$usado = "";
$categorias = listaCategorias($conexao);
?>
<h1>Formulário de Produto</h1>
<form action="adiciona-produto.php" method="POST">
<table class="table">
<?php include("produto-formulario-base.php"); ?>
<tr>
<td><input class="btn btn-primary" type="submit" value="Cadastrar"/></td>
</tr>
</table>
</form>
<?php include("rodape.php");?>
produto-formulario-base.php:
<tr>
<td>Produto:</td>
<td><input class="form-control" type="text" name="nome" value="<?=$produto['nome']?>"/></td>
</tr>
<tr>
<td>Preço:</td>
<td><input class="form-control" type="number" name="preco" value="<?=$produto['preco']?>"/></td>
</tr>
<tr>
<td>Descrição:</td>
<td><textarea class="form-control" name="descricao"/><?=$produto['descricao']?></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="checkbox" name="usado" <?=$usado?> value="true">Usado</td>
</tr>
<tr>
<td>Categoria:</td>
<td>
<select name="categoria_id" class="form-control">
<?php
#$categorias = listaCategorias($conexao);
foreach($categorias as $categoria) :
$essaEhACategoria = $produto['categoria_id'] == $categoria['id'];
$selecao = $essaEhACategoria ? "selected" : "";
?>
<option value="<?=$categoria['id']?>" <?=$selecao?>>
<?=$categoria['nome']?>
</option>
<?php endforeach ?>
</select>
</td>
</tr>