当前位置: 代码迷 >> PHP >> PHP SMARTY 双循环(递归)输出分类 有关问题
  详细解决方案

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

热度:559   发布时间:2012-05-27 05:42:30.0
PHP SMARTY 双循环(递归)输出分类 问题
模版
PHP 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}


程序
PHP 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输出的效果
HTML 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代码 
HTML 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
%>