2014-05-13 20 views
1

我想在我的网站上创建一个下拉菜单,我打了一堵砖墙,并不知道该怎么做。做一个动态下拉导航系统

基本上我需要检查数据库中的2-3个变量,并输出正确的数据。

我现在有检查它的外部链接或不是,如果它包含一个子菜单,但我不能得到它输出正确的信息。

基本上我想检查它是否是一个外部或非外部链接,如果它有一个子菜单,如果它有一个子菜单,显示它下面的菜单选项。所以说我有菜单1,2,3,4和2,4有一个子菜单,我需要他们列出他们下面的其他链接。我已经把我的数据库toplink_id(表示该项目应该在哪个链接下)sc_order(它将控制子链接显示的顺序)也下拉菜单(它告诉我菜单是否有子菜单)

这里是我的代码的开始

$sql = "SELECT label, url, ext, dropdown FROM content_pages WHERE top_nav='1' AND active='1' ORDER by page_order ASC"; 
$query = mysqli_query($dbc, $sql) or die (mysqli_error($dbc)); 

$menuDisplay .= '<div class="bg-2"><div class="container_12"><article class="grid_12"><nav><ul class="menu sf-js-enabled">'; 

while ($row = mysqli_fetch_array($query)) { 

$url = $row["url"]; 
$nav_label = $row["label"]; 
$drop_down ='<ul><li><a href="../pages/' . $url . '">' . $nav_label . '</a></li></ul>'; 


if ($row["ext"] == 0 && $row["dropdown"] == 1){ 

$menuDisplay .= '<li><a href="../pages/' . $url . '">' . $nav_label . '</a>' . $drop_down . '</li>'; 
} 

elseif ($row["ext"] == 1 && $row["dropdown"] == 1){ 

$menuDisplay .= '<li><a href="../' . $url . '">' . $nav_label . '</a>' . $drop_down . '</li>'; 
} 
elseif ($row["ext"] == 0){ 

$menuDisplay .= '<li><a href="../pages/' . $url . '">' . $nav_label . '</a></li>'; 
} 

elseif ($row["ext"] == 1) 
{ 
    $menuDisplay .= '<li><a href="../' . $url . '">' . $nav_label . '</a></li>'; 
} 



} 
$menuDisplay .= '</ul></nav></article></div></div></header>'; 
mysqli_free_result($query); 
+0

你应该使用'jquery'为 – Viscocent

+0

具体在哪里,你被卡住?我没有看到任何尝试从每个主要项目中拉出子项目。 –

+0

到处都是非常诚实的。我失去了从这里前进的方向。我有一个完整的头脑空白。 –

回答

0

我发现不使用jQuery的最佳方式是使用多维数组。

// Create a multidimensional array to conatin a list of items and parents 
$menu = array(
    'items' => array(), 
    'parents' => array(), 
); 
// Builds the array lists with data from the menu table 


while ($items = mysqli_fetch_assoc($query)) 
{ 

    // Creates entry into items array with current menu item id ie. $menu['items'][1] 
    $menu['items'][$items['id']] = $items; 
    // Creates entry into parents array. Parents array contains a list of all items with children 
    $menu['parents'][$items['parent']][] = $items['id']; 
} 

// Menu builder function, parentId 0 is the root 

function buildMenu($parent, $menu) 
{ 

    $html = "\n"; 
    if (isset($menu['parents'][$parent])) 
    { 

     $html .= ""; 

     foreach ($menu['parents'][$parent] as $itemId) 

     { 
    if(!isset($menu['parents'][$itemId]) && $menu['items'][$itemId]['ext'] == 0) 
    { 
     $html .= "<li>\n <a href='../pages/".$menu['items'][$itemId]['link']."'>".$menu['items'][$itemId]['label']."</a>\n</li> \n"; 
    } 
    else 
       if(!isset($menu['parents'][$itemId]) && $menu['items'][$itemId]['ext'] == 1) 
    { 
     $html .= "<li>\n <a href='../".$menu['items'][$itemId]['link']."'>".$menu['items'][$itemId]['label']."</a>\n</li> \n"; 
    } 


if(isset($menu['parents'][$itemId])) 
      { 

      $html .= "<li>\n <a href='../pages/".$menu['items'][$itemId]['link']."'>".$menu['items'][$itemId]['label']."<span class='arrow-down'></span></a> \n"; 
     $html .= "<ul style='border-radius: 0px 0px 6px 6px'> \n"; 
      $html .= buildMenu($itemId, $menu); 
     $html .= "</ul> \n"; 
      $html .= "</li> \n"; 

      } 

    } 
    $html .= "\n"; 
    } 
    $html .= ""; 
return $html; 

}