Como criar um menu em árvore com PHP e MySQL

Escrito por laura gittins | Traduzido por josé fabián
  • Compartilhar
  • Tweetar
  • Compartilhar
  • Pin
  • E-mail
Como criar um menu em árvore com PHP e MySQL
Um menu em árvore serve para organizar os dados em uma hierarquia (Photos.com/Photos.com/Getty Images)

Um menu em árvore é uma representação visual de uma lista de elementos, organizados de forma que alguns elementos ou categorias, chamados "nodos pais", possam ser expandidos e mostrar subelementos, chamados "nodos filhos". Você pode obter informações de um banco de dados MySQL e construir um menu em árvore em uma página web usando PHP. A sua tabela de MySQL deve ter um formato específico que identifique os nodos pais e filhos e as relações entre eles. Cada registro na tabela será um nodo e você poderá criar uma hierarquia de vários níveis.

Nível de dificuldade:
Moderadamente fácil

Outras pessoas estão lendo

Instruções

  1. 1

    Faça login no seu banco de dados MySQL. Crie uma tabela com três campos: ID do nodo, descrição e ID do nodo pai. Insira informação na tabela. Cada ID de nodo debe ser único. Os nodos de nível superior possuem um ID de nodo pai 0 e um nodo filho indica o número do nodo de nível superior.

  2. 2

    Abra o arquivo HTML no qual você queira criar um menu em árvore. Insira o cursor onde você quiser criar a árvore e digite o código seguinte:

    <?php $db = mysql_connect ($nomehost, $usuario, $senha); mysql_select_db ($bancodados);

    Estas linhas apenas configuram a conexão ao seu banco de dados MySQL. Altere as variáveis PHP pelos valores apropriados para a sua base.

  3. 3

    Digite o seguinte código:

    $result = mysql_query("SELECT * FROM nome_tabela") or die(erro_mysql());

    Esta linha faz uma chamada ao banco de dados MySQL, obtém da tabela a informação da estrutura do menu em árvore e a salva em uma variável PHP.

  4. 4

    Digite o seguinte código:

    $menu = Array(); while ($m = mysql_fetch_array($result)) { $menu[] = Array('id'=>$m['id'], 'texto'=>$m['texto'], 'pai'=>$m['idpai']); }

    A primeira linha cria uma variável PHP e a inicializa como um array. O laço "while" percorre os registros da variável $result e os formata para serem usados por uma função PHP.

  5. 5

    Digite o seguinte código:

    function menuarvore($linhas,$idpai=0) { $result = "<ul>"; foreach ($linhas as $linha) {

    A primeira linha cria uma nova função "menuarvore" que você usará para montar a sua árvore, e usa um ou dois parâmetros. No primeiro lugar, ela toma a informação de um array PHP. O segundo parâmetro é um número inteiro que contém informação sobre os nodos pai na árvore. Se você não indicar um, a função criará a sua própria variável e inicializará o valor em zero.

  6. 6

    Digite o seguinte código:

    if ($linha['idpai'] == $idpai) { $result.= "<li>{$linha[texto]}"; foreach ($linha as $r) { if ($r['idpai'] == $r['id']) $children = true; else $children = false; } if ($children = true) $result.= treemenu($linhas,$linha['id']) . "</li>"; }

    Estas linhas usam sentenças "if" e laços para percorrer a informação da variável PHP que contém a estrutura do menu em árvore. Se a linha for um pai com um valor ID zero, a função criará um nodo pai. Se a linha for um filho, a função buscará o ID do nodo pai e criará um nodo filho conectado a ele. A função "treemenu" é chamada recursivamente para verificar cada linha da variável de array PHP.

  7. 7

    Digite o seguinte código:

    } $result .= "</ul>"; return $result; }

    Estas linhas fecham o laço "for" que percorre todas as colunas dos resultados MySQL, adicionam código HTML e retornam a árvore da função. A última linha fecha o bloco de funções "treemenu".

  8. 8

    Digite o seguinte código:

    echo menuarvore($menu); ?>

    A primeira linha chama a função "menuarvore" e lhe passa a informação do banco de dados MySQL. Depois, mostra a árvore na página web. A segunda linha fecha o bloco de código PHP.

Dicas & Advertências

  • Adicione mais campos à tabela do MySQL se for preciso. Por exemplo, você pode adicionar outro campo de texto que contenha os hiperlinks para cada nodo.

Não perca

Filtro:
  • Geral
  • Artigos
  • Slides
  • Vídeos
Mostrar:
  • Mais relevantes
  • Mais lidos
  • Mais recentes

Nenhum artigo disponível

Nenhum slide disponível

Nenhum vídeo disponível