php dinamik menü oluşturma [çoğaltmak]

2 Cevap

Possible Duplicate:
how to generate an dynamic array

veritabanında ve tıklama gösteri alt menüde mağaza var hangi nedenle altmenüden bir dinamik menü oluşturmak için nasıl. Ben bir taze php geliştirici değilim bana yardımcı olun.

2 Cevap

İşte iyi açıklayan bir blog makale: http://crisp.tweakblogs.net/blog/317/formatting-a-multi-level-menu-using-only-one-query.html Sonra sadece CSS / sakla alt menüleri göstermek için kullanın.

Tamam ilk böyle tablolar oluşturmak

CREATE TABLE `dyn_menu` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `label` VARCHAR(50) NOT NULL DEFAULT '',
  `link_url` VARCHAR(100) NOT NULL DEFAULT '#',
  `parent_id` INT(11) NOT NULL DEFAULT '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;


Prepare your DB

$sql = "SELECT id, label, link_url, parent_id FROM dyn_menu ORDER BY parent_id, id ASC";
$items = mysql_query($sql);
while ($obj = mysql_fetch_object($items)) {
    if ($obj->parent_id == 0) {
        $parent_menu[$obj->id]['label'] = $obj->label;
        $parent_menu[$obj->id]['link'] = $obj->link_url;
    } else {
        $sub_menu[$obj->id]['parent'] = $obj->parent_id;
        $sub_menu[$obj->id]['label'] = $obj->label;
        $sub_menu[$obj->id]['link'] = $obj->link_url;
        $parent_menu[$obj->parent_id]['count']++;
    }
}
mysql_free_result($items);


Write The Function


function dyn_menu($parent_array, $sub_array, $qs_val = "menu", $main_id = "nav", $sub_id = "subnav", $extra_style = "foldout") {
    $menu = "<ul id=\"".$main_id."\">\n";
    foreach ($parent_array as $pkey => $pval) {
        if (!empty($pval['count'])) {
            $menu .= "  <li><a class=\"".$extra_style."\" href=\"".$pval['link']."?".$qs_val."=".$pkey."\">".$pval['label']."</a></li>\n";
        } else {
            $menu .= "  <li><a href=\"".$pval['link']."\">".$pval['label']."</a></li>\n";
        }
        if (!empty($_REQUEST[$qs_val])) {
            $menu .= "<ul id=\"".$sub_id."\">\n";
            foreach ($sub_array as $sval) {
                if ($pkey == $_REQUEST[$qs_val] && $pkey == $sval['parent']) {
                    $menu .= "<li><a href=\"".rebuild_link($sval['link'], $qs_val, $sval['parent'])."\">".$sval['label']."</a></li>\n";
                }
            }
            $menu .= "</ul>\n";
        }
    }
    $menu .= "</ul>\n";
    return $menu;
}

Eğlenmek Thats