Olá!
Possuo a seguinte linha de código
echo "Categoria: ".$row_produto['idcategoria']."<br><br>";
Se eu colocar “nomecategoria” no lugar de “idcategoria” continua exibindo apenas o ID.
A tabela produto está relacionada à categoria.
Obs:
Está alí, “Categoria: 16”. Gostaria que fosse exibido o nome da categoria, mas não consigo consertar isso.
Poste a consulta SQL, para vermos como foi montada.
o código todo relacionado:
<label for="categoria">Categoria</label>
<?php
$get = ("SELECT * FROM categorias ORDER BY categoria DESC");
$result2 = mysqli_query($con, $get);
$option = '';
while($row = mysqli_fetch_array($result2))
{
$option .= "<option value = '".$row['idcategoria']."'>".$row['categoria']."</option>";
}
?>
<select name="categoria" id="categoriaoption">
<?php
echo "<option value='0'>Selecione</option>";
echo $option;
?>
</select>
Se a tabela Produto
tem um relacionamento com a tabela Categoria
, na tabela Produto
irá ser registrado só a FK. Para trazer as informações da categoria, tu deve usar uma junção interna (INNER JOIN). Por exemplo:
Supondo que as tabelas são essas:
CREATE TABLE IF NOT EXISTS Categorias(
codigo_categoria INT NOT NULL AUTO_INCREMENT,
nome_categoria VARCHAR(30) NOT NULL UNIQUE;
CONSTRAINT pk_categoria PRIMARY KEY(codigo_categoria)
);
CREATE TABLE IF NOT EXISTS Produtos(
codigo_produto INT NOT NULL AUTO_INCREMENT,
categoria INT NOT NULL;
nome_produto VARCHAR(20) NOT NULL,
CONSTRAINT pk_produto PRIMARY KEY(codigo_produto),
CONSTRAINT fk_produto_categoria FOREIGN KEY(categoria) REFERENCES Categorias(codigo_categoria)
);
Então a consulta de produtos deveria ser algo do tipo:
SELECT Produtos.codigo_produto, Categorias.codigo_categoria, Categorias.nome_categoria,
Produtos.codigo_produto FROM Produtos
INNER JOIN Categorias ON Produtos.categoria = Categorias.codigo_categoria
ORDER BY Produtos.codigo_produto;
1 curtida
Obrigado amigo, entendi e está funcionando aqui! Valeu mesmo.
Tem algum lugar que eu possa ler mais sobre?