Kandungan
Menu pokok adalah representasi visual bagi senarai unsur-unsur, yang dianjurkan supaya beberapa unsur atau kategori, dipanggil "nod induk", boleh diperluas dan memaparkan subelements, dipanggil "nod anak". Anda boleh mendapatkan maklumat dari pangkalan data MySQL dan membina menu pokok pada halaman web menggunakan PHP. Jadual MySQL anda mesti mempunyai format khusus yang mengenalpasti nod ibu dan anak dan hubungan di antara mereka. Setiap rekod dalam jadual akan menjadi nod dan anda boleh membuat hierarki bertingkat.
Arahan
Menu pokok berfungsi untuk mengatur data dalam hierarki (Photos.com/Photos.com/Getty Images)-
Log masuk ke pangkalan data MySQL anda. Buat jadual dengan tiga bidang: ID nod, perihalan, dan nod induk ID. Masukkan maklumat dalam jadual. Setiap ID nod mestilah unik. Nod peringkat atas mempunyai ID nod induk 0 dan nod kanak-kanak menunjukkan bilangan nod peringkat atas.
-
Buka fail HTML di mana anda ingin membuat menu pokok. Masukkan kursor di mana anda ingin membuat pokok dan masukkan kod berikut:
$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.
-
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.
-
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.
-
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']) . ' '; }
-
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);
Baris pertama memanggil fungsi "menuarvore" dan menyampaikan maklumat ke pangkalan data MySQL. Kemudian, ia menunjukkan pokok dalam laman web. Baris kedua menutup blok kod PHP.
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.
Bagaimana
- Tambah lebih banyak medan ke jadual MySQL jika diperlukan. Sebagai contoh, anda boleh menambah medan teks lain yang mengandungi hyperlink untuk setiap nod.