Cómo crear un menú en árbol con PHP y MySQL

Autor: Florence Bailey
Fecha De Creación: 19 Marcha 2021
Fecha De Actualización: 1 Mes De Julio 2024
Anonim
Cómo crear un menú en árbol con PHP y MySQL - Artículos
Cómo crear un menú en árbol con PHP y MySQL - Artículos

Contenido

Un menú en árbol es una representación visual de una lista de elementos, organizados de forma que algunos elementos o categorías, llamados "nodos padres", puedan ser expandidos y mostrar subelementos, llamados "nodos hijos". Usted puede obtener información de una base de datos MySQL y construir un menú en árbol en una página web usando PHP. Su tabla de MySQL debe tener un formato específico que identifique los nodos padres e hijos y las relaciones entre ellos. Cada registro en la tabla será un nodo y podrá crear una jerarquía de varios niveles.


instrucciones

Un menú en árbol sirve para organizar los datos en una jerarquía (Photos.com/Photos.com/Getty Images)
  1. Inicie sesión en su base de datos MySQL. Cree una tabla con tres campos: ID de nodo, descripción e ID de nodo padre. Introduzca información en la tabla. Cada ID de nodo debe ser único. Los nodos de nivel superior tienen un identificador de nodo padre 0 y un nodo secundario indica el número de nodo de nivel superior.

  2. Abra el archivo HTML en el que desea crear un menú en árbol. Introduzca el cursor donde desea crear el árbol y escriba el siguiente código:

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


    • Digite o seguinte código:

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

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

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

  6. Digite o seguinte código:

    echo menuarvore($menu);

    La primera línea llama a la función "menuarvore" y le pasa la información de la base de datos MySQL. A continuación, muestra el árbol en la página web. La segunda línea cierra el bloque de código PHP.

consejos

  • Agregar más campos a la tabla de MySQL si es necesario. Por ejemplo, puede agregar otro campo de texto que contenga los hipervínculos a cada nodo.