Hoe een boommenu te maken met PHP en MySQL

Schrijver: Ellen Moore
Datum Van Creatie: 14 Januari 2021
Updatedatum: 6 Juli- 2024
Anonim
Scriptcase - Overview
Video: Scriptcase - Overview

Inhoud

Een boommenu is een visuele weergave van een lijst met elementen, zodanig georganiseerd dat sommige elementen of categorieën, "bovenliggende knooppunten" genoemd, kunnen worden uitgebreid en subelementen kunnen weergeven, genaamd "onderliggende nodes". Je kunt informatie krijgen van een MySQL-database en een boommenu bouwen op een webpagina met behulp van PHP. Uw MySQL-tabel moet een specifieke indeling hebben die de bovenliggende en onderliggende knooppunten en de onderlinge relaties identificeert. Elke record in de tabel is een knooppunt en u kunt een hiërarchie op meerdere niveaus maken.


routebeschrijving

Een boommenu dient om de gegevens in een hiërarchie te ordenen (Photos.com/Photos.com/Getty Images)
  1. Meld u aan bij uw MySQL-database Maak een tabel met drie velden: knooppunt-ID, beschrijving en bovenliggend knooppunt-ID. Voer informatie in de tabel in. Elke knooppunt-ID moet uniek zijn. De knooppunten op het hoogste niveau hebben een bovenliggend knooppunt-ID van 0 en een kindknooppunt geeft het nummer van het knooppunt op het hoogste niveau aan.

  2. Open het HTML-bestand waarin u een boommenu wilt maken. Plaats de cursor op de plek waar je de boom wilt maken en voer de volgende code in:

    $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);

    De eerste regel roept de "menuarvore" -functie op en geeft de informatie door aan de MySQL-database, waarna de boom op de webpagina wordt weergegeven. De tweede regel sluit het PHP-codeblok.

tips

  • Voeg indien nodig meer velden toe aan de MySQL-tabel. U kunt bijvoorbeeld een ander tekstveld toevoegen dat de hyperlinks voor elk knooppunt bevat.