Multilevel menu atau menu pohon adalah representasi visual dari daftar item, yang diatur sehingga beberapa item atau kategori, yang disebut node induk, dapat diperluas dan menunjukkan sub-item, yang disebut node anak. Dengan multilevel menu akan memudahkan untuk menggambarkan hirarki dari data.
berikut ini kami coba membahas cara membuat multilvel menu dengan PHP MySQL.
Pertama-tama kita buat dulu sebuah tabel yang kita sebut tb_kategori. Adapun field dari tb_kategori adalah
- id, ID menu yang bertipe integer dan memiliki properti auto_increment.
- nama, nama menu dengan tipe data varchar
- parent, induk dari masing-masing menu. Disini kita asumsikan untuk menu root parent-nya adalah 0.
Anda dapat menggunakan PhpMyAdmin atau Mysql GUI tool yang dicari lewat Google.
Tambahkan beberapa data:
Nah selanjutnya kita akan membuat script PHP-nya. Kita akan function punya_sub, dimana fungsi ini untuk mengecek apakah sebuah menu memiliki sub atau tidak.
Selamat mencoba.
CREATE TABLE `tb_kategori` ( `id` int(10) NOT NULL AUTO_INCREMENT, `nama` varchar(100) DEFAULT NULL, `parent` int(10) DEFAULT NULL, PRIMARY KEY (`id`) ) ;
Tambahkan beberapa data:
| id | nama | parent |
| 1 | Menu 1 | 0 |
| 2 | Menu 2 | 0 |
| 3 | Menu 3 | 0 |
| 4 | Menu 1.1 | 1 |
| 5 | Menu 1.2 | 1 |
| 6 | Menu 1.2.1 | 5 |
| 7 | Menu 1.2.2 | 5 |
| 8 | Menu 2.1 | 2 |
| 9 | Menu 2.2 | 2 |
| 10 | Menu 2.2.1 | 9 |
| 11 | Menu 2.2.2 | 9 |
| 12 | Menu 2.2.2.1 | 11 |
| 13 | Menu 3.1 | 3 |
| 14 | Menu 2.1.1 | 8 |
Nah selanjutnya kita akan membuat script PHP-nya. Kita akan function punya_sub, dimana fungsi ini untuk mengecek apakah sebuah menu memiliki sub atau tidak.
function punya_sub($id) {
$sql1="SELECT * FROM tb_kategori WHERE parent='$id'";
$hs1=mysql_query($sql1);
$jum=mysql_num_rows($hs1); // mendapatkan jumlah sub menu
return $jum;
}
Dan selanjutnya function untuk membuat menu pohon. Function ini nantinya akan memanggil dirinya sendiri atau rekursiv
function buat_menu($parent=0)
{
$menu = "- "; // inisialisasi awal
$sql ="SELECT * FROM tb_kategori WHERE parent='$parent'";
$hasil =mysql_query($sql);
while($row=mysql_fetch_assoc($hasil))
{
if ($row['parent'] == $parent){
$menu.= "
- ". {$row[nama]}"; if (punya_sub($row['id'])>0) // Cek, pakah memiliki sub menu $menu.= buat_menu($row['id']); $menu.= "." "; } } $menu.= "
Selamat mencoba.







