Pages

Free Download

PHP : Create Array Menu Tree - (Membuat Menu Array)

2012-09-24

Seringkali kita menginginkan sebuah menu navigasi dropdown indah yang dibangun menggunakan CSS dan sedikit kode PHP. Hal ini terkadang membuat kita luput untuk memiliki sebuah menu navigasi yang dinamis, dimana klien bisa menambahkan dan menghapus menu sesuai keinginan mereka.
Melakukan hal ini secara teori kita hanya membutuhkan sebuah varibel array yang memiliki nilai sesuai dengan data pada tabel "menu" di basis data, kemudian mengecek apakah menu memiliki sub-menu atau tidak dan mengecek sub-menu memuliki sub-sub-menu atau tidak, begitu seterusnya hingga seluruh record menu selesai dicek.
Secara teori memang mudah, namun pada penerapannya ternyata banyak teman-teman programer yang mahir sekalipun sedikit kesulitan untuk membuat pohon array seperti ini.
Untuk itu saya memposting source code untuk membangun pohon array dan mencetaknya dalam format unordered list. Silhakan Anda salin secara bebas.



$nav = Array
(
    Array
    (
        'id' => 27,
        'name' => 'home',
        'link' => 'home.html',
        'parent' => 0
    ),
    Array
    (
        'id' => 30,
        'name' => 'about',
        'link' => 'about.html',
        'parent' => 27
    ),
    Array
    (
        'id' => 31,
        'name' => 'tour',
        'link' => 'tour.html',
        'parent' => 27
    ),
    Array
    (
        'id' => 40,
        'name' => 'me',
        'link' => 'me.html',
        'parent' => 30
    ),
    Array
    (
        'id' => 50,
        'name' => 'lombok',
        'link' => 'you.html',
        'parent' => 31
    ),
    Array
    (
        'id' => 2,
        'name' => 'lagi',
        'link' => 'you.html',
        'parent' => 0
    ),
    Array
    (
        'id' => 100,
        'name' => 'lagi',
        'link' => 'you.html',
        'parent' => 50
    )
);
$nav_ordered = GenerateNavArray($nav);

echo(GenerateNavHTML($nav_ordered));

function GenerateNavArray($arr, $parent = 0)
{
    $pages = Array();
    foreach($arr as $page)
    {
        if($page['parent'] == $parent)
        {
            $page['sub'] = isset($page['sub']) ? $page['sub'] : GenerateNavArray($arr, $page['id']);
            $pages[] = $page;
        }
    }
    return $pages;
}

// loop the multidimensional array recursively to generate the HTML
function GenerateNavHTML($nav)
{
    foreach($nav as $page)
    {
        $html .= '<li>';
        $html .= '<a href="' . $page['link'] . '">' . $page['name'] . '</a>';
        if(isset($page['sub'])){
            $html .='<ul>';
            $html .= GenerateNavHTML($page['sub']);
            $html .='</ul>';
        }
        $html .= '</li>';
    }
    return $html;
}
?>

No comments:

Post a Comment

 

Most Reading

Sidebar One

Mungkin blog ini ngak penting-penting amat buat anda...
Tapi, saya tetap berharap blog ini menjadi sangat bermanfaat untuk anda.
Karena blog ini saya buat dengan tujuan yang sangat mulia (lebay seh..), yaitu untuk membagi-bagi ilmu yang saya miliki, walupun masih sedikit banget, mengenai komputer, khususnya Programing dan network...

So... apa bila anda tidak puas dengan penjelasan saya, anda bisa mengirim email kepada saya atau bahkan datang kerumah saya (he2x...) bila anda ingin bertanya atau hanya sekedar ngomel-ngomel.

Terima Kasih.
_Fr377_