Php 无法使用mysql生成纯css分层下拉菜单的子菜单
我正在尝试创建一个下拉菜单,它可以与纯css一起工作。这在HTML中非常有效,没有任何问题,但是当我试图从SQL表中获取信息时,我似乎遇到了障碍。我会尽量简明扼要地解释这个问题 不带PHP/Mysqli的HTMLPhp 无法使用mysql生成纯css分层下拉菜单的子菜单,php,css,mysqli,Php,Css,Mysqli,我正在尝试创建一个下拉菜单,它可以与纯css一起工作。这在HTML中非常有效,没有任何问题,但是当我试图从SQL表中获取信息时,我似乎遇到了障碍。我会尽量简明扼要地解释这个问题 不带PHP/Mysqli的HTML <div id='menu'> <ul> <li><a href='#'><span>Home</span></a></li> <li cl a
<div id='menu'>
<ul>
<li><a href='#'><span>Home</span></a></li>
<li cl ass='active has-sub'>
<a href='#'><span>Products</span></a>
<ul>
<li class='has-sub'>
<a href='#'><span>Product 1</span></a>
<ul>
<li><a href='#'><span>Sub Product</span></a></li>
</ul>
</li>
</ul>
</li>
<li><a href='#'><span>About</span></a></li>
<li class='last'><a href='#'><span>Contact</span></a></li>
</ul>
</div>
-
-
带有PHP/Mysqli的HTML
<div id="menu">
<ul>
<li class="current"><a href="index.php">Main</a></li>
<li><a href="about.php">About Us</a></li>
<li><a href="projects.php">Projects</a></li>
<li class="has-sub"><a href="">Properties</a>
<ul>
<?php
require_once 'connect.php';
$qry = db_select("select city as city,name from property a left join area b on a.area_id=b.id left join city c on b.city_id=c.id group by city");
foreach ($qry as $row) {
echo "<li class='has-sub'><a href='#'><span>".$row['city']."</span></a></li>";
}
echo "<ul>";
$qry = db_select("select city as city,name from property a left join area b on a.area_id=b.id left join city c on b.city_id=c.id ");
foreach ($qry as $row) {
echo "<li><a href='#'><span>".$row['name']."</span></a></li>";
}
?>
</ul>
<li><a href="contacts.html">Contacts</a></li>
</ul>
</div>
</div>
-
有一些错误:
-2对1
-项目属性没有
-
现在让我谈谈你们菜单的结构,是这样的吗?
Main
关于我们
项目
属性>
县>>
名字1
名称2
...
name i关于您实际想要的菜单结构有点不清楚,但可以肯定的是,您缺少了两个结束标记
<li class="has-sub"><a href="">Properties</a>
<ul>
<?php
require_once 'connect.php';
$qry = db_select("select city as city,name from property a left join area b on a.area_id=b.id left join city c on b.city_id=c.id group by city");
foreach ($qry as $row)
{
echo "<li class='has-sub'><a href='#'><span>".$row['city']."</span></a></li>";
}
echo "<ul>"; //this seems the issue, should be </ul></li>
?>
-
试试这个,希望有帮助
<ul>
<?php
require_once 'connect.php';
$qry = db_select("select city as city,name from property a left join area b on a.area_id=b.id left join city c on b.city_id=c.id group by city");
foreach ($qry as $row) : ?>
<li class='has-sub'><a href='#'><span><?php echo $row['city']; ?></span></a>
<ul>
<li><a href='#'><span><?php echo $row['name']; ?></span></a></li>
</ul>
</li>
<?php endforeach; ?>
</ul>
-
我不确定这样做是否正确,但我找到了一个答案,确保每组的第一条记录显示一个
,而不是其余的
基本上,这是通过以下方法实现的
- 变量为true
- 如果变量为true,则“do something”变量为false
- else“做点别的”
我还增加了UL和Li课程,但这并不相关
这是可行的,但我不确定这是否是最好的方法。我还没有尝试过其他方法,但我想知道这是否是一个好方法,因为它正在发挥作用
<li class="has-sub"><a href=""><span>Properties</span></a>
<?php
$qry=db_select("select distinct city from city a join area b on a.id=b.city_id join property c on b.id=c.area_id");
$first=true;
foreach ($qry as $row)
{
$city=$row['city'];
if ($first)
{
?>
<ul>
<li class='has-sub'><a href='#'><span><?php echo $row['city']; ?></span></a>
<?php
$first=false;
}else{
?>
<li class='has-sub'><a href='#'><span><?php echo $row['city']; ?></span></a>
<?php
}
$city=$row['city'];
$qry=db_select("select city,a.id as id,name from property a left join area b on a.area_id=b.id left join city c on b.city_id=c.id where city='$city' ");
$first=true;
foreach ($qry as $row)
{
if ($first)
{
?>
<ul class="drop_ul"><li class="drop_col"><a href="showprop.php?id=<?php echo $row['id']; ?>"><span><?php echo $row['name']; ?></span></a></li>
<?php
$first=false;
}
else{
?>
<li class="drop_col"><a href="showprop.php?id=<?php echo $row['id']; ?>"><span><?php echo $row['name']; ?></span></a></li>
<?php
}}?>
</ul>
</li>
<?php
}
?>
</ul>
-
-
-
属性菜单-城市(来自sql)子菜单-属性名称(来自sql)子菜单项请注意您的代码缩进,看到未结构化的代码非常容易混淆,而且很难首先理解问题。