Kako ustvariti drevesni meni z PHP in MySQL

Avtor: Carl Weaver
Datum Ustvarjanja: 2 Februarjem 2021
Datum Posodobitve: 21 November 2024
Anonim
Ruby on Rails by Leila Hofer
Video.: Ruby on Rails by Leila Hofer

Vsebina

Meni drevesa je vizualna predstavitev seznama elementov, organiziranih tako, da se lahko nekateri elementi ali kategorije, imenovani "nadrejena vozlišča", razširijo in prikažejo podelemente, imenovane "otroška vozlišča". Lahko dobite informacije iz baze podatkov MySQL in izdelate drevesni meni na spletni strani z uporabo PHP. Vaša tabela MySQL mora imeti posebno obliko, ki identificira starševsko in otroško vozlišče ter odnose med njimi. Vsak zapis v tabeli bo vozlišče in lahko ustvarite hierarhijo na več ravneh.


Navodila

Meni drevesa služi za urejanje podatkov v hierarhiji (Photos.com/Photos.com/Getty Images)
  1. Prijavite se v bazo podatkov MySQL Ustvarite tabelo s tremi polji: ID vozlišča, opis in ID nadrejenega vozlišča. Vnesite podatke v tabelo. Vsak ID vozlišča mora biti unikaten. Vozlišča najvišje ravni imajo ID nadrejenega vozlišča 0 in podrejeno vozlišče označuje številko vozlišča najvišje ravni.

  2. Odprite datoteko HTML, v kateri želite ustvariti meni drevesa. Vstavite kazalec na mesto, kjer želite ustvariti drevo, in vnesite naslednjo kodo:

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

    Prva vrstica pokliče funkcijo "menuarvore" in podatke posreduje v bazo podatkov MySQL, nato pa na spletni strani prikaže drevo. Druga vrstica zapre kodni blok PHP.

Kako

  • Dodajte več polj v tabelo MySQL, če je to potrebno. Na primer, lahko dodate drugo besedilno polje, ki vsebuje hiperpovezave za vsako vozlišče.