LOGIN:

iMasters | Por uma internet mais criativa e dinâmica

Feeds

Terça-feira, 18/12/2007 - 18:35 - Por Thiago Ferreira
Seções relacionadas:

Breadcrumb Navigation: Navegação em Categorias

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 Fazer

Como 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, strings de conexão, css, html, etc.

Grande abraços!

Todos os artigos de Thiago Ferreira

3 comentários publicados

  • 1. Assim nao valw

    Quinta-feira, 31/01/2008, por Uélio Nobre

    Cara foi boa a luz que vc deu a nos brasileiro...
    mas assim.. ficaria mais facil de entender se vc postasse a sua classe de abstração.. para depois fazermos as nossas entendeu?
    Abraço!

    Responder comentário
  • 2. Resposta ao Uélio Nobre

    Sexta-feira, 01/02/2008, por Thiago Ferreira

    Uélio, aqui está a classe de abstração de BD:
    http://www.tmferreira.com.br/blog/2007/06/22/classe-para-abstracao-de-banco-de-dados-mysql-e-php4/

    Responder comentário
  • 3. preciso da estrutura do bd

    Quinta-feira, 15/01/2009, por Agostinho Bello do Santos Junior Bello

    preciso da estrutura do bd
    ficaria muito grato se passasse a estrutura do banco p mim ter ideia o link acima n existe +
    valeu otima materia

    Responder comentário

Poste um comentário


Os textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.

Sobre o autor

Thiago Ferreira mais conhecido como tmferreira (tmferreira@bol.com.br) e é formado em Análise de Sistemas pela Universidade Salgado de Oliveira. Trabalha desde 2005 com desenvolvimento WEB, na FatorClick (http://www.fatorclick.com.br). Também mantém um blog (http://www.tmferreira.com.br/blog/) sobre desenvolvimento WEB, onde escreve sobre PHP, Javascript, Banco de Dados e Webstandards.


Indique para um amigo

captcha

TI SHOP Produtos iMasters

  • Lançamento: CD-ROM Treinamento Aplicado de SQL - Lançamento! Treinamento Aplicado de SQL - Aprenda a trabalhar com SQL com bancos de dados Oracle e SQL Server. São mais de 100 tópicos explicados por Mauro Pichilliani, um articulistas mais lidos do iMasters. Aproveite! Apenas R$ 69,90 no TI SHOP.
  • Lançamento: Livro iMasters "O Encontro de 2 Mundos"- Este livro conta com 56 crônicas de profissionais mais admirados e influentes do mercado brasileiro de Internet. Aproveite o preço especial para leitores do iMasters. Apenas R$ 40,00 e envio imediato!
  • DVD Curso Completo de Photoshop - Do conceito à finalização Lançamento! Curso Completo de Photoshop, em DVD, com mais de 230 aulas dividas em 4 módulos: conceito, básico, avançado e finalização. Apenas R$ 69,50 no TI SHOP - Frete com 50% de desconto
  • DVD Javascript Starter - Curso Completo Com mais de 9 horas de vídeo-aulas, é um curso completo sobre Javascript. Ideal para quem deseja aprender a linguagem. Apenas R$ 64,90 no TI SHOP - Frete com 50% de desconto!

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.