2015-07-18 133 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