Selamat malam sahabat AJN. Sekarang saya akan berbagi
mengenai teknik bikin menu dinamis menggunakan PHP. Menu yang akan saya
bahas ini adalah menu 2 level, namun bila ingin dikembangkan lagi
menjadi multilevel bisa saja. Oke, trik kali ini akan saya coba
sambungkan dengan tutorial dulu sekali di pembahasan seputar
CSS, tepatnya pada materi
Membuat Dropdown Menu dengan CSS. Oke langsung saja kita ke pembahasannya.
Yang
pertama kita butuhkan adalah rancangan database, karena menu-menu yang
kita buat ini disimpan di database supaya nanti kita bisa menambah,
pengubah, menghapus serta mengaktifkan dan menonaktifkannya. Struktur
tabel yang kita butuhkan untuk pembuatan menu ini kurang lebih
memerlukan field-field seperti di bawah ini. Silahkan Create tabel dulu
di phpMyAdmin dengan skema seperti berikut!

Sebagai bahan contoh, silahkan insert secara manua ke tabel menu yang baru dibuat di atas menu-menu berikut!
idmenu | menu | link | sub | aktif |
1 | Home | index.php | 0 | 1 |
2 | Menu 1 | # | 0 | 1 |
3 | Menu 2 | mmn | 0 | 1 |
4 | Menu 3 | #menu3 | 0 | 1 |
5 | Menu 4 | #menu4 | 0 | 1 |
6 | Sub Menu 1.1 | #1.1 | 2 | 1 |
7 | Sub Menu 1.2 | #1.2 | 2 | 1 |
8 | Sub Menu 1.3 | #1.3 | 2 | 1 |
9 | Sub Menu 2.1 | #2.1 | 3 | 1 |
10 | Sub Menu 2.2 | #2.2 | 3 | 1 |
Setelah
kita mempunyai struktur dan data menu di tabel menu, lakukanlah query
untuk menampilkan menu-menu yang ada dengan script di bawah ini. Oya
script ini diambil dari source yang membahas tutorial membuat dropdown
menu yang telah saya sebutkan di atas, namun pada tampilan list menunya
(UL) saya modifikasi dengan menampilkan data dari database
- <!DOCTYPE html>
- <html>
- <head>
- <title>CSS Menu Dinamis dengan PHP</title>
- <style>
- .menubar{
- display:block;
- height:38px;
- background:#000
- }
- .menubar ul{
- margin:0;
- padding:0;
- list-style:none;
- z-index:99999;
- }
- .menu a,.menu a:visited{
- display:block;
- text-decoration:none;
- padding:10px 18px;
- position:relative;
- z-index:99999;
- }
- .menu{
- vertical-align:top;
- display:inline-block;
- }
- .menu li{
- position:relative;
- z-index:99999;
- }
- .menu>li{
- float:left;
- }
- .menu li>a,.menu li>a:visited{
- color:#fff;
- font-weight:bold;
- background: #00009e;
- }
- .menu>li>a:hover{
- background: #008800;
- }
- .menu li li>a:hover{
- color:#fff;
- background:#00009e;
- }
- .menu li li a{
- background: #008800;
- color:#fff;
- }
- .menu li:hover li a{
- font-weight:normal;
- }
- .menu ul{
- position:absolute;
- white-space:nowrap;
- z-index:99999;
- left:-99999em;
- margin-top:0px;
- }
- .menu>li:hover>ul{
- left:auto;
- min-width:100%;
- }
- body{font-family:arial;font-size:13px;color:#444;background:#eee}
- .wrapper{width:900px;margin:auto}
- </style>
- </head>
- <body>
- <div class="wrapper">
- <div class="menubar">
- <ul class="menu">
- <?php
- // koneksi
- $mysqli = new mysqli('localhost', 'root', '', 'mydb');
- // ambil menu utama
- $res = $mysqli->query("SELECT idmenu,menu,link from test_menu where sub='0'");
- while($menu = $res->fetch_array(MYSQLI_ASSOC)){
- // tampilkan sub menu kalau ada
- $res2 = $mysqli->query("SELECT idmenu,menu,link from menu where sub='$menu[idmenu]'");
- $num = $res2->num_rows;
- echo " <li><a href=\"$menu[link]\">$menu[menu]</a>";
- if($num>0){
- echo "\n <ul>\n";
- while($sub = $res2->fetch_array(MYSQLI_ASSOC)){
- echo " <li><a href=\"$sub[link]\">$sub[menu]</a></li>\n";
- }
- $res2->free_result();
- echo " </ul>";
- }
- echo "</li>\n";
- }
- $res->free_result();
- ?>
- </ul>
- </div>
- </body>
- </body>
- </html>
No comments: