×
Loading ...

Como criar um menu em árvore com PHP e MySQL

Atualizado em 23 março, 2017

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.

Instruções

Um menu em árvore serve para organizar os dados em uma hierarquia (Photos.com/Photos.com/Getty Images)
  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.

    Loading...
  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:

    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. 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. 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. Digite o seguinte código:

    function menuarvore($linhas,$idpai=0) { $result = "

      "; 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. Digite o seguinte código:

    if ($linha['idpai'] == $idpai) { $result.= "

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

    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.

  • Digite o seguinte código:

    } $result .= ""; 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".

  • 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.

  • Loading...

    Dicas

    • 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.

    Referências

    Loading ...
    Loading ...
    Loading ...
    Loading ...
    Loading ...