带有php和mysql的两级子菜单
我想使菜单与2级子菜单。最终,HTML应该像下面的代码一样:带有php和mysql的两级子菜单,php,Php,我想使菜单与2级子菜单。最终,HTML应该像下面的代码一样: <ul> <li><a href="#">elektronikos prekes</a> <ul> <li><a href="#">dar kaskas </a> <ul> <li><a href="#
<ul>
<li><a href="#">elektronikos prekes</a>
<ul>
<li><a href="#">dar kaskas </a>
<ul>
<li><a href="#">ka ka 2</a></li>
</ul>
</li>
<li><a href="#">tranzistoriai </a>
<ul>
<li><a href="#">sub 1</a></li>
<li><a href="#">tikri 1</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">kompiuteriai</a>
<ul>
<li><a href="#">nesiojami 8</a></li>
</ul>
</li>
</ul>
这是我的密码:
$queryreg=mysql_query("select distinct a.meniu as meniu , b.sub as sub, c.sub2 as sub2,a.meniu_id as m_id, b.sub_id as s_id,
c.sub2_id as s_id2, count(distinct p.id) as pre
from meniu a
LEFT OUTER JOIN sub AS b ON ( a.meniu_id = b.meniu_id and b.rodyti='1' )
LEFT OUTER JOIN preke AS p ON ( b.sub = p.sub and a.meniu=p.meniu)
LEFT OUTER JOIN sub2 AS c ON ( b.sub_id = c.sub_id AND c.rodyti='1')
LEFT OUTER JOIN preke AS pr ON ( pr.sub2 = c.sub2 and pr.sub=b.sub and pr.meniu=a.meniu)
where a.rodyti='1' and a.meniu='elektronikos prekes' or a.meniu='kompiuteriai'
group by a.meniu, a.meniu_id, b.sub, b.sub_id, c.sub2, c.sub_id");
$AnkstesnisSub='';
$ankstesnisMeniu='';
$output = $ankstesnisMeniu.$AnkstesnisSub = '';
echo'<ul>';
while ($row = mysql_fetch_assoc ($queryreg))
{
if ($row['meniu'] != $ankstesnisMeniu )
{
if (!empty ($ankstesnisMeniu) )
{
$output .= " </ul></li></ul></li>";
}
$output .= '<li><a href="#">' . $row['meniu'] . "</a><ul>";
$ankstesnisMeniu = $row['meniu'];
}
if ( $row['sub'] != $AnkstesnisSub)
{
if (!empty ($AnkstesnisSub))
{
$output .= "</ul></li>";
}
if($row['sub2']==NULL){$prekiu_kiekis = $row['pre'];}
elseif($row['sub2']!=NULL){$prekiu_kiekis ='';}
$output .= '<li><a href="#">' . $row['sub'] . " $prekiu_kiekis</a><ul>";
$AnkstesnisSub = $row['sub'];
$prevID2 = $row['s_id'];
}
if($row['sub2']!=NULL){$prekiu_kiekis = $row['pre'];}
elseif($row['sub2']==NULL){$prekiu_kiekis ='';}
$output .= '<li><a href="#">' . $row['sub2'] ." $prekiu_kiekis</a></li>";
$prevID3=$row['sub2'];
}
$output = '' . $output . "</ul></li></ul></li>";
echo"$output";
echo'</ul>';
但我得到:
<ul>
<li><a href="#">elektronikos prekes</a>
<ul>
<li><a href="#">dar kaskas</a>
<ul>
<li><a href="#">ka ka 2</a></li>
</ul>
</li>
<li><a href="#">tranzistoriai</a>
<ul>
<li><a href="#">sub 1</a></li>
<li><a href="#">tikri 1</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">kompiuteriai</a>
<ul></ul>
</li>
<li><a href="#">nesiojami 8</a>
<ul>
<li><a href="#"></a></li>
</ul>
</li>
</ul>
</li></ul>
对于第一个菜单项,一切正常,但第二个菜单项错误。也许有人能帮我吗?我认为这是一个非常复杂的代码,为什么不把它分成两个表呢 顶部菜单=>链接id、href、链接文本、计数子项 子菜单=>link\u id,parent\u id,href,link\u text,count\u sub 获取菜单的代码:
$query = mysql_query("SELECT * FROM top_menu");
while ( $row = mysql_fetch_assoc($queryreg) )
{
echo '<li>' . $row['href'] . '</li>';
if( $row['subcount'] != 0 ) {
{ make query for the sub_menu and do more while... and in the while you can add more }
}
}
等等。。我认为它更简洁。您不应该将HTML连接与代码混合使用。分两步运行:第一步获取数据,使用它,第二步:以您想要的方式将其转换为HTML,但不要将两者混合使用。想想有一天你需要输出Json而不是HTMLTanks来提供帮助。我发现我的密码有误。现在一切都好了。