O meu select permanece igual em todas as páginas. Seguem os códigos:
banco-produto.php
<?php
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.categoria_id = c.id");
while ($produto = mysqli_fetch_assoc($resultado)) {
array_push($produtos, $produto);
}
return $produtos;
}
function insereProduto($conexao, $nome, $preco, $descricao, $categoria_id, $usado) {
$query = "insert into produtos (nome, preco, descricao, categoria_id, usado) values ('{$nome}', {$preco}, '{$descricao}', {$categoria_id}, {$usado})";
$resultadoDaInsercao = mysqli_query($conexao, $query);
return $resultadoDaInsercao;
}
function buscaProduto($conexao, $id) {
$query = "select * from produtos where id = {$id}";
$resultado = mysqli_query($conexao, $query);
return mysqli_fetch_assoc($resultado);
}
function alteraProduto($conexao, $id, $nome, $preco, $descricao, $categoria_id, $usado) {
$query = "update produtos set nome = '{$nome}', preco = {$preco}, descricao = '{$descricao}', categoria_id= {$categoria_id}, usado = {$usado} where id = {$id}";
return mysqli_query($conexao, $query);
}
function removeProduto($conexao, $id) {
$query = "delete from produtos where id = {$id}";
return mysqli_query($conexao, $query);
}
produto-altera-formulario.php
<html>
<?php include("cabecalho.php");
include("conecta.php");
include("banco-categoria.php");
include("banco-produto.php");
$id = $_GET['id'];
$produto = buscaProduto($conexao, $id);
$categorias = listaCategorias($conexao);
$usado = $produto['usado'] ? "checked='checked'" : "";
?>
<h1>Alterando produtos</h1>
<form action="altera-produto.php" method="post">
<input type="hidden" class="form-control" name="id" value="<?=$produto['id']?>">
<table class="table">
<tr>
<td>Nome</td>
<td><input type="text" class="form-control" name="nome" value="<?=$produto['nome']?>"></td>
</tr>
<tr>
<td>Preço</td>
<td><input type="number" class="form-control" name="preco" value="<?=$produto['preco']?>"></td>
</tr>
<tr>
<td>Descrição</td>
<td><textarea name="descricao" class="form-control"><?=$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 foreach($categorias as $categoria) :
$essaEhACategoria = $produto['categoria_id'] == $categoria['id'];
$selecao = $essaEhACategoria ? "selected='selected'" : "";
?>
<option value="<?=$categoria['id']?>" <?=$selecao;?>>
<?=$categoria['nome']?>
</option>
<?php endforeach ?>
</select>
</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Cadastrar" class="btn btn-primary"></td>
</tr>
</table>
</form>
<?php include("rodape.php") ?>
</html>
produto-lista.php
<html>
<?php include("cabecalho.php");
include("conecta.php");
include("banco-produto.php"); ?>
<?php if(array_key_exists("removido", $_GET) && $_GET["removido"]=="true") {
?>
<p class="alert-success">Produto removido com sucesso!</p>
<?php
}
$produtos = listaProdutos($conexao);
?>
<table class="table table-striped table-bordered">
<?php
foreach ($produtos as $produto) :
?>
<tr>
<td><?=$produto['nome']?></td>
<td><?=$produto['preco']?></td>
<td><?=substr($produto['descricao'], 0, 40)?></td>
<td><?=$produto['categoria_nome']?></td>
<td><a class="btn btn-primary" href="produto-altera-formulario.php?id=<?=$produto['id']?>">alterar</a></td>
<td>
<form action="remove-produto.php" method="post">
<input type="hidden" name="id" value="<?=$produto['id']?>">
<button class="btn btn-danger">remover</button>
</form>
</td>
</tr>
<?php
endforeach
?>
</table>
<?php include("rodape.php") ?>
</html>
Me parece que tudo está igual, não consegui encontrar nenhum problema, mas a categoria fica sempre a primeira selecionada (esporte).