{foreach from=$list item=row}
{foreach from=$list2 item=row2}
{/foreach}
{/foreach}

解决方案 »

  1.   

    你仔细看一下smarty中的section和foreach。
      

  2.   

    section和foreach 我知道 但是不知道怎么建立一个2维数组
      

  3.   

    可能你的困惑是怎么拿到数据,并赋给二维数组吧?这应该是程序页面做的事情,不是tpl。
      

  4.   

    <?
    $result = mysql_query("select DISTINCT pid table");
    while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
        unset($sub_array);
        $result2 = mysql_query("select id,pid,name table where pid='".$row["pid"]."'");
        while ($row2 = mysql_fetch_array($result2,MYSQL_ASSOC)) {
             $sub_array[]=$row2;
        }
        $result_array[]=$sub_array;
    }
    $smarty->assign("result_array",$result_array);
    ?>
      

  5.   

    楼上的 那这样的话 smarty摸版 该怎么修改呢?
      

  6.   

    <{section name=pid_sec loop=$result_array}>
    <{$result_array[pid_sec][0].pid}>:<br> <!--大类ID-->
    <{section name=id_sec loop=$result_array[pid_sec]}><!--循环出每个大类ID里的商品-->
    &nbsp;&nbsp;&nbsp;&nbsp;<{$result_array[pid_sec][id_sec].id}>, <!--商品ID-->
    <{$result_array[pid_sec][id_sec].name}>:<br> <!--商品名-->
    <{/section}>
    <{/section}>
      

  7.   

    marse(阿彪)  
    我根据你给我的,是可以的 没问题. 但是当我第一行显示大类名称,好象不行. 如果就直接<{$result_array[pid_sec][0].name}>这个显示的是小类的排名第一个名称
      

  8.   

    那你就把大类名称放进去就行了,把这句SQL改一下:
        $result2 = mysql_query("select id,pid,name table where pid='".$row["pid"]."'");
    ------->
        $result2 = mysql_query("select id,pid,name,dalei_name table where pid='".$row["pid"]."'");然后smarty
    <{$result_array[pid_sec][0].dalei_name}>
    你试试看
      

  9.   

    因为一条记录是一维数组,所以其实你要的就是3维数组。以下是我写的测试程序。
    <?php 
    include_once("./inc/smarty.inc.php");//
    $shangpin1=array("id"=>"1","pid"=>"ID1","name"=>"name1");
    $shangpin2=array("id"=>"2","pid"=>"ID1","name"=>"name2");
    $shangpin3=array("id"=>"3","pid"=>"ID1","name"=>"name3");
    $shangpin4=array("id"=>"4","pid"=>"ID2","name"=>"name4");
    $shangpin5=array("id"=>"5","pid"=>"ID2","name"=>"name5");
    $shangpin6=array("id"=>"6","pid"=>"ID3","name"=>"name6");
    $shangpin7=array("id"=>"7","pid"=>"ID3","name"=>"name7");
    $shangpin8=array("id"=>"8","pid"=>"ID3","name"=>"name8");
    $shangpin9=array("id"=>"9","pid"=>"ID3","name"=>"name9");$dalei1[]=$shangpin1;
    $dalei1[]=$shangpin2;
    $dalei1[]=$shangpin3;
    $dalei2[]=$shangpin4;
    $dalei2[]=$shangpin5;
    $dalei3[]=$shangpin6;
    $dalei3[]=$shangpin7;
    $dalei3[]=$shangpin8;
    $dalei3[]=$shangpin9;
    $result_array[]=$dalei1;
    $result_array[]=$dalei2;
    $result_array[]=$dalei3;$smarty->assign("result_array",$result_array);
    $smarty->display("entry/test.html"); 
    ?> 
    smarty部分就是上面给出的。
    希望能帮助你理解。只要理解了,你想输出什么就输出什么。其实smarty里的数组,循环....概念都和php差不多的
      

  10.   

    恩 我明白你的意思 可能我这个表有点特殊性, 大类名和小类名都用name这个字段的,只是用pid来标住父类的id, 这样来实现无 限级分类的.
    但是我用了另外个变通的方法也可以实现 ,基于你这给的思路 
    非常感谢
      

  11.   

    还有请教下 怎么在smarty里输出多行2列呢? 就是一个商品的展示?
      

  12.   

    不和你平常输出一样的嘛
    {foreach from=$array item=value key=key}
    <tr><td>{$key}<td><td>{$value}</td></tr>
    {/foreach}
      

  13.   

    楼上没说错,其实smarty就是php(只是语法有一点点的不同),你php怎么输出多行,smarty就怎么输。
    不怕做不到,只怕想不到。赫赫
      

  14.   

    section循环二维数组不需要嵌套!其中list就是$data[0],$data[1],$data[2]...所以里面写$data[list]就代表了一个二维数组的一维,后面再连上你的数据库字段名:$data[list].topic_view_count就可以显示二维数组的元素了。
    关键是,你这个$data,要是一个"合法"的二维数组!用下面这个函数,会将每一条数据进行入栈,最后返回的是一个表内所有数据的集合的二维数组。function fetchArray($res,$type = MYSQL_ASSOC) {
    $array = array();
    while($f = mysql_fetch_array($res, $type)) {
    array_push($array,$f);
    }
    unset($res);
    return $array;
    }section显示二维数组的例子:{section name=list loop=$data}
    <tr bgcolor="{cycle values=',#eeeeee'}">
    <td align="center" width="68" height="24">{$data[list].topic_view_count}</td>
    <td align="center" width="64" height="24">{$data[list].topic_reply_count}</td>
    <td width="319" height="24"><a href="topicread.php?title={$data[list].topic_title|escape:'url'}" target="_blank">{$data[list].topic_title}</a></td>
    <td width="104" height="24">{if $data[list].user_nick eq '匿名用户'}匿名用户{else}<a href="user.php?userid={$data[list].user_id}" target="_blank">{$data[list].user_nick}</a>{/if}</td>
    <td width="145" height="24">
    {if $data[list].last_reply_time eq null}
    {if $data[list].user_nick eq '匿名用户'}
    匿名用户
    {else}
    <a href="user.php?userid={$data[list].user_id}" target="_blank">{$data[list].user_nick}</a>&nbsp;&nbsp;
    {/if}
    {else}
    {$data[list].last_reply_time}
    {/if}
    {if $data[list].last_reply_time eq null}
    {$data[list].topic_created_time}
    {else}
    {$data[list].last_reply_time}
    {/if}
    </td>
    </tr>{/section}