PHP SMARTY 双循环(递归)输出分类 问题

模版

[复制到剪切板]
CODE:
{foreach from=$classlist item=newsclass}
    <
DIV class="bg03"><a href="news.php?classid={$newsclass.id}&{if $newsclass.ispro eq 1}ispro=true{/if}" target="main">{$newsclass.classname}</a></DIV>
{/foreach} ;


程序

[复制到剪切板]
CODE:
$sql "select * from jh_newsclass where parentid = 0";
$result $mysqli->query($sql);
while (
$row $result->fetch_row()) {
    
$classlist[] = array(
        
'id'=>$row[0],
        
'classname'=>$row[2],
        
'parentid'=>$row[1],
        
'ispro'=>$row[3],    
        );
}
$result->close();
$mysqli->close();
$smarty->assign('classlist',$classlist);
$smarty->assign('webname',Webname);
$smarty->display('admin/left.htm'); ;

这样只能输出一级分类. 我需要在一级分类下再输出二级..三级..该怎么写呀?  


以前用ASP输出的效果


[复制到剪切板]
CODE:
<DIV class="bg03">新闻专题</DIV>
<
div class="forumlist_groups"><DIV align=left><ul><li class="forumli"><a href='news.asp?classid=3&newsclass=3' target='main'>+--<img id="folder180" src="images/leaf.gif" width="18" height="18" align="absmiddle"><font color="">新闻动态</font></a></li><li class="forumli"><a href='news.asp?classid=6&newsclass=6' target='main'>+--<img id="folder180" src="images/leaf.gif" width="18" height="18" align="absmiddle"><font color="">美大专题</font></a></li><li class="forumli"><a href='news.asp?classid=16&newsclass=16' target='main'>+--<img id="folder180" src="images/leaf.gif" width="18" height="18" align="absmiddle"><font color="">月兔专题</font></a></li></ul></div></div>

    <
DIV class="bg03"><a href="news.asp?classid=14&newsclass=14" target="main">供求信息</a></DIV>

              <
DIV class="bg03">产品展示</DIV>
<
div class="forumlist_groups"><DIV align=left><ul><li class="forumli"><a href='news.asp?classid=18&ispro=true&newsclass=18' target='main'>+--<img id="folder180" src="images/leaf.gif" width="18" height="18" align="absmiddle"><font color="">美大灶具</font></a></li><li class="forumli"><a href='news.asp?classid=19&ispro=true&newsclass=19' target='main'>+--<img id="folder180" src="images/leaf.gif" width="18" height="18" align="absmiddle"><font color="">月图厨柜</font></a></li><li class="forumli"><a href='news.asp?classid=20&ispro=true&newsclass=20' target='main'>+--<img id="folder180" src="images/leaf.gif" width="18" height="18" align="absmiddle"><font color="">集成效果</font></a></li></ul></div></div> ;

原来的ASP代码

[复制到剪切板]
CODE:
<%
dim strs
Set Rs 
server.CreateObject(JH_RS)
sql "select * from jh_newsclass where parentid = 0"
Rs.Open SQL,Conn,1,1
while not rs.eof
%>
<%
        
set strs conn.execute("select * from jh_newsclass where parentid = " rs("id"))
        if 
strs.eof and strs.bof then
%>

    <
DIV class="bg03"><a href="news.php?classid=<%=rs("id")%>&newsclass=<%=rs("id")%><%if rs("ispro") then response.Write("&ispro=true")%>" target="main"><%=rs("classname")%></a></DIV>
<%
        else
%>
              <
DIV class="bg03"><%=rs("classname")%></DIV>
<%
        
end if
%>
        <%
call showparentclass("+","--",rs("id"))%>
<%
rs.movenext
wend
rs
.close
set rs 
nothing
%>
<%
sub showparentclass(astr,tree,parentid)
    
dim showparentclassrs,temprs
    set showparentclassrs 
conn.execute("select * from Jh_newsclass where parentid = " parentid)
    if 
showparentclassrs.eof then 
        
exit sub
    
else
    
response.Write("<div class=""forumlist_groups""><DIV align=left><ul>")
        while 
not showparentclassrs.eof

            response
.Write"<li class=""forumli"">"
            
set temprs conn.execute("select * from Jh_newsclass where parentid = " showparentclassrs("id"))
            if 
temprs.eof and temprs.bof then
                response
.Write"<a href='news.php?classid="&showparentclassrs("id")
                if 
showparentclassrs("ispro"then response.Write("&ispro=true")
                
response.Write"&newsclass="&showparentclassrs("id")&"' target='main'>" astr tree "<img id=""folder180"" src=""images/leaf.gif"" width=""18"" height=""18"" align=""absmiddle""><font color="""">" showparentclassrs("classname")&"</font></a>"
            
else
                
response.Write astr tree "<img id=""folder180"" src=""images/folderClosed.gif"" width=""18"" height=""18"" align=""absmiddle"">" showparentclassrs("classname")
            
end if
            
set temprs nothing
            response
.Write"</li>"


            
call showparentclass(astr,tree&"--",showparentclassrs("id"))
        
showparentclassrs.movenext
        wend
    response
.Write("</ul></div></div>")
    
end if
end sub
%> ;