我想用2级子菜单制作菜单。最终,HTML应该像下面的代码:
<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>
到第一个菜单项一切都很好,但第二个错误。也许有人可以帮助我?
答案 0 :(得分:0)
我认为这是非常复杂的代码,为什么不将它分成2个表呢?
top_menu =&gt; link_id,href,link_text,count_sub
sub_menu =&gt; link_id,parent_id,href,link_text,count_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 }
}
}
等等......我的意见更加清晰。