2015-07-18 131 views
1

我試圖與子菜單垂直下拉菜單,例如:CSS不工作的菜單與子菜單PHP MYSQL

1- 
1- 
2- 
    1- 
3- 

我想出一個具有如下功能,但即使使用以下頁面定義CSS,也不會應用CSS:

<link href="estilo.css" rel="stylesheet" type="text/css" media="screen" /> 

我在做什麼錯?

function display_menus($menuIdPai = 0) { 
    $query = mysql_query("SELECT * FROM menu WHERE menuIdPai = ".$menuIdPai) or die(mysql_error()); 
    if (mysql_num_rows($query) > 0) { 
     echo "<ul>"; 
     while ($row = mysql_fetch_array($query)) { 
      echo "<li> <a href='percentagem.php'>".$row['id'].$row['menuNome']."</a>"; 
      display_menus($row['menuId']); 
      echo "</li>"; 
     } 
     echo "</ul>"; 
    } 
} 
<ul id="nav"> 
    <?php display_menus(); ?> 
</ul> 
ul { 
    margin: 0; 
    padding: 0; 
    list-style: none; 
    width: 150px; 
} 
ul li { 
    position: relative; 
} 
li ul { 
    position: absolute; 
    left: 149px; 
    top: 0; 
    display: none; 
} 
ul li a { 
    display: block; 
    text-decoration: none; 
    color: #E2144A; 
    background: #fff; 
    padding: 5px; 
    border: 1px solid #ccc; 
} 
li:hover ul { 
    display: block; 
} 
+0

我已編輯您的問題,以簡化和澄清未來的觀衆。請讓我知道我是否偏離了您的問題的原意。 –

+0

你好,菜單的輸出正在工作。唯一不起作用的是該菜單中的CSS。 –

回答

1

的CSS沒有被應用,因爲你的HTML輸出不正確。在下面的代碼:

<ul id="nav"> 
    <?php display_menus(); ?> 
</ul> 

調用display_menus()生產自己的<ul>...</ul>標籤,所以你最終:

<ul id="nav"><ul> ... 
</ul></ul> 

這是當然的,無效的HTML。一種解決方法是跳過<ul>...</ul>標籤的HTML:

<?php display_menus(); ?> 

,並調整display_menus()輸出id="nav"屬性只根菜單(當$menuIdPai == 0):

function display_menus($menuIdPai = 0) { 

/* Added $id variable: */ 

    $id = ($menuIdPai == 0 ? ' id="nav"' : ''); /* Note space before id */ 

    $query = mysql_query("SELECT * FROM menu WHERE menuIdPai = ".$menuIdPai) or die(mysql_error()); 
    if (mysql_num_rows($query) > 0) { 

/* Added $id here: */ 

     echo "<ul$id>"; 

     while ($row = mysql_fetch_array($query)) { 
      echo "<li> <a href='percentagem.php'>".$row['id'].$row['menuNome']."</a>"; 
      display_menus($row['menuId']); 
      echo "</li>"; 
     } 
     echo "</ul>"; 
    } 
} 

請注意,您如果$row['id']$row['menuNome']恰巧包含<&字符,也會生成不正確的HTML。您應該可以用htmlspecialchars($row['menuNome'])來逃避後者。可能不是第一個,這取決於你對id有什麼樣的價值。

還請注意 MySQL擴展已棄用,不再維護。您最近應該使用MySQLiPDO