Quando você visualiza um produto num site qualquer, como o Mercado Livre, normalmente lhe é mostrado algo como:
Informática -> Notebooks e Laptops -> AMD Turion 64 X2 -> HP e Compaq -> HP TX1119us
Isto diz, para o usuário, que ele está visualizando um Notebook com processador AMD Turion 64 X2 dos fabricantes HP e Compaq e com modelo HP TX1119us. Instintivamente, se o usuário quiser ver todos os notebooks com este processador, independente de marca, ele clicará no link que está escrito o nome do processador. Da mesma forma, se quiser ver todos os modelos de notebooks HP ou Compaq, clicará no link correspondente.
Como FazerComo todo script que percorrerá um número indefinido de níveis de hierarquia, existem duas possibilidades: fazê-lo recursivamente ou iterativamente. No artigo citado acima, utilizei um codigo recursivo. Para ser mais didático e democrático, dessa vez preferi utilizar um código iterativo.
Eis o código comentado:
<?php
#Resgata o valor da categoria passada pela query string
$cat = isset( $_GET['cat'] ) ? abs( intval( $_GET['cat'] ) ) : '1';
#Array que conterá o breadcrumb
$breadcrumb = array();
#Inclui o arquivo de abstração de banco de dados
require_once( 'class.bd.php' );
#Cria o objeto que manipulará o BD
$bd = new bd();
#Query SQL para resgatar os dados da categoria passada pela query string
$sql = 'select * from locais where ativo=\'S\' and id='.$cat;
#Executa a query SQL
$query = $bd->query( $sql );
#Se a categoria passada não existir
if ( $bd->num_rows( $query ) == 0 ) {
#Assume que a categoria será a padrão (default)
$cat = 1;
$breadcrumb[] = array( 'titulo' => 'Raiz', 'id' => $cat );
}
#Se não é a categoria padrão
if ( $cat != 1 ) {
#Resgata os dados da categoria
$campos = $bd->fetch_assoc( $query );
#Faça
do {
#Adiciona ao array breadcrumb os dados
$breadcrumb[] = $campos;
#Query SQL para resgatar os dados da categoria pai
$sql = 'select * from locais where ativo = \'S\' and id = (select id_pai from locais where id = '.$campos['id'].')';
#Executa a Query SQL
$query = $bd->query( $sql );
#Resgata os dados da categoria pai
$campos = $bd->fetch_assoc( $query );
#Enquanto o número de linhas for diferente de 0
} while ( $bd->num_rows( $query ) != 0 );
}
#Inverte o array breadcrumb
$breadcrumb = array_reverse( $breadcrumb );
#Iniciliza a variável de saída
$saida = '';
#Percorre todos os itens do breadcrumb
foreach( $breadcrumb as $chave => $dados ) {
#Monta a string de saída
$saida .= '<a href="?cat='.$dados['id'].'" title="'.$dados['titulo'].'">'.$dados['titulo'].'</a> » ';
}
#Remove de $saida o elemento separados
$saida = substr( $saida, 0, -3 );
#Exibe a saida
echo 'Você está em: '.$saida;
?>Como é de praxe, para utilizar os meus códigos normalmente você precisará fazer adaptações: tabelas e campos do banco de dados↳Banco de dados134 conteúdosSQL ou NoSQL: eis a questão!!Data · mar 2020Banco de dados: como organizar e dar segurança para milhões de dados de loteriasData · mai 20215 serviços gratuitos na cloud para bancos de dados PostgresData · fev 2025Ver tudo em Data →, strings de conexão, css↳CSS31 conteúdosArquitetura CSS: CSS FuncionalDev (Back & Front) · set 2019Entendendo posicionamento com CSS de uma vez por todasDev (Back & Front) · jul 2025Sites que combinam estética e usabilidade: reflexos da evolução do CSSDev (Back & Front) · fev 2025Ver tudo em Dev (Back & Front) →, html, etc.
Grande abraços!






