gpt4 book ai didi

php - CSS 不适用于 PHP MYSQL 中带有子菜单的菜单

转载 作者:行者123 更新时间:2023-11-28 16:59:42 29 4
gpt4 key购买 nike

我正在尝试制作一个带有子菜单的垂直下拉菜单,例如:

1-
1-
2-
1-
3-

我想出了下面的函数,但是 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;
}

最佳答案

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'],您也会生成不正确的 HTML或 $row['menuNome']恰好包含 <&人物。你应该用 htmlspecialchars($row['menuNome']) 来逃避后者.可能不是第一个,这取决于您对 id 的值类型的。

另请注意,MySQL 扩展已弃用且不再维护。你应该使用 MySQLiPDO这些天。

关于php - CSS 不适用于 PHP MYSQL 中带有子菜单的菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31496198/

29 4 0