Monday, June 17, 2013

Membuat multilevel menu dinamis / tree menu dengan PHP MySQL

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


  1. id, ID menu yang bertipe integer dan memiliki properti auto_increment.
  2. nama, nama menu dengan tipe data varchar
  3. 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.
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:

idnamaparent
1Menu 10
2Menu 20
3Menu 30
4Menu 1.11
5Menu 1.21
6Menu 1.2.15
7Menu 1.2.25
8Menu 2.12
9Menu 2.22
10Menu 2.2.19
11Menu 2.2.29
12Menu 2.2.2.111
13Menu 3.13
14Menu 2.1.18

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.= "
"; return $menu; }
Untuk membuat menu tinggal memanggil fungsi buat menu : echo buat_menu();
Selamat mencoba.
Categories:

4 comments:

  1. kalau menu multilevel ini dihubungkan dengan database (ngambil datanya dari database gimana caranya ya)?

    www.tokoonlinebaru.com

    ReplyDelete
  2. Kalau ditambah dengan jumlah gmn gan? kaya jumlah artikel, jd parennya hitung jumlah article anak

    ReplyDelete
  3. Titanium jewelry piercing | Etsy
    Find the best titanium bracelet titanium jewelry piercing on Etsy. used ford escape titanium Sign up for titanium prices our newsletter to receive free titanium rimless glasses gifts for women. Choose from a range of jewelry silicone dab rig with titanium nail

    ReplyDelete