membuat multi level menu dengan php dan database
Multilevel menu 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.
Comments
Post a Comment