解决方案 »

  1.   

    两级分类都集成到一个数组变量中,用嵌套循环输出到html中
      

  2.   


    $questionfl=$page->pagesql("select * from questionfl where sid=false");//查找顶级分类
    while($flrows=$questionfl->fetchRow()){
        $listfl[]["id"]=$flrows["id"];
        $listfl[]["name"]=$flrows["name"];
     
        $questionsl=$page->pagesql("select * from questionfl where sid='".$flrows["id"]."'");//二级分类
        while($slrows=$questionsl->fetchRow()){
            $listfl[]["sub"]["id"]=$slrows["id"];
            $listfl[]["sub"]["name"]=$slrows["name"];
            $listfl[]["sub"]["sid"]=$slrows["sid"];
        }
    }
    这样组合试一下
      

  3.   


    $questionfl=$page->pagesql("select * from questionfl where sid=false");//查找顶级分类
    $q=0;
    while($flrows=$questionfl->fetchRow()){
        $listfl[$q]["id"]=$flrows["id"];
        $listfl[$q]["name"]=$flrows["name"];
     
        $questionsl=$page->pagesql("select * from questionfl where sid='".$listfl[$q]["id"]."'");//二级分类
        while($slrows=$questionsl->fetchRow()){
            $listsl[$q]["sub"][]["id"]=$slrows["id"];
            $listsl[$q]["sub"][]["name"]=$slrows["name"];
            $listsl[$q]["sub"][]["sid"]=$slrows["sid"];
        }
        $q++;
    }楼上的可能不太对,你试试这个,我没有环境 大致就是这个思路
      

  4.   

    第一层循环跟以前一样,第二层循环的变量是第一层变量的sub
      

  5.   


    {foreach item=listfl from=$listfl}
      <dl class="qa_sort">
    <dt><a href="#">{$listfl.name}</a></dt>
    <dd>
    {foreach item=sub from=$listfl.sub}
    <a href="#">{$sub.name}</a>|
    {/foreach}
    </dd>
      </dl>
    {/foreach}
      

  6.   


    大侠为什么显示的时候会出现这个问题啊?<a href="#">色彩搭配</a>
      

  7.   

    额。。是这样的
                      <a href="#"></a>
                         <a href="#">装修风格</a>
                         <a href="#"></a>
                         <a href="#"></a>
                         <a href="#">色彩搭配</a>
                         <a href="#"></a>
                         <a href="#"></a>
                         <a href="#">整套设计</a>
                         <a href="#"></a>
                         <a href="#"></a>
                         <a href="#">局部设计</a>
                         <a href="#"></a>
                         <a href="#"></a>
                         <a href="#">其他</a>
                         <a href="#"></a>
                     </dd>
    为什么会多出空白<a></a>??
      

  8.   

    看里面的二级分类是否都是null或者""
      

  9.   

    并不是全部为空。有一部分打印出来是这样的Array ( [0] => Array ( [id] => 1 [name] => 装修设计 [sub] => Array ( [0] => Array ( [id] => 6 ) [1] => Array ( [name] => 装修风格 ) [2] => Array ( [sid] => 1 ) [3] => Array ( [id] => 7 ) [4] => Array ( [name] => 色彩搭配 ) [5] => Array ( [sid] => 1 ) [6] => Array ( [id] => 8 ) [7] => Array ( [name] => 整套设计 ) 
    而且好像是ID和NAME是不同步循环出来的。
      

  10.   


    $listsl[$q]["sub"][]["id"]=$slrows["id"];
            $listsl[$q]["sub"][]["name"]=$slrows["name"];
            $listsl[$q]["sub"][]["sid"]=$slrows["sid"];把这层循环的中括号去掉就行了
      

  11.   


    去掉过后$questionfl=$page->pagesql("select * from questionfl where sid=false");//查找顶级分类
    $q=0;
    while($flrows=$questionfl->fetchRow()){
        $listfl[$q]["id"]=$flrows["id"];
        $listfl[$q]["name"]=$flrows["name"];
      
        $questionsl=$page->pagesql("select * from questionfl where sid='".$listfl[$q]["id"]."'");//二级分类
        while($slrows=$questionsl->fetchRow()){
            $listfl[$q]["sub"]["id"]=$slrows["id"];
            $listfl[$q]["sub"]["name"]=$slrows["name"];
            $listfl[$q]["sub"]["sid"]=$slrows["sid"];
        }
        $q++;
    }
    print_r($listfl);前台打印出来和调用显示出来的是
    Array ( [0] => Array ( [id] => 1 [name] => 装修设计 [sub] => Array ( [id] => 47 [name] => 其他 [sid] => 1 ) ) [1] => Array ( [id] => 2 [name] => 产品咨询 [sub] => Array ( [id] => 19 [name] => 五金 [sid] => 2 ) ) [2] => Array ( [id] => 3 [name] => 装修流程 [sub] => Array ( [id] => 45 [name] => 其他 [sid] => 3 ) ) [3] => Array ( [id] => 4 [name] => 家居配饰 [sub] => Array ( [id] => 44 [name] => 其他 [sid] => 4 ) ) [4] => Array ( [id] => 5 [name] => 居室装修 [sub] => Array ( [id] => 43 [name] => 其他 [sid] => 5 ) ) )在页面循环显示的是<dd>
    <a style="color:#F5691E;"href="listfl">4</a>
    <a style="color:#F5691E;"href="listfl">�</a> 
    <a style="color:#F5691E;"href="listfl">1</a>
    </dd>
    模板里面这样调用的
    {foreach item=listfl from=$listfl}
       <dl class="qa_sort">
         <dt><a href="#">{$listfl.name}</a></dt>
         <dd>
             {foreach item=sub from=$listfl.sub}
             <a href="listfl" style="color:#F5691E;">{$sub.name}</a>
                {/foreach}
         </dd>
       </dl>
    {/foreach}
      

  12.   

    页面显示还不对?
    smarty中assign的是这个变量名字吗?
      

  13.   

    是的啊。while($flrows=$questionfl->fetchRow()){
        $listfl[$q]["id"]=$flrows["id"];
        $listfl[$q]["name"]=$flrows["name"];
      
        $questionsl=$page->pagesql("select * from questionfl where sid='".$listfl[$q]["id"]."'");//二级分类
        while($slrows=$questionsl->fetchRow()){
            $listfl[$q]["sub"][]["id"]=$slrows["id"];
            $listfl[$q]["sub"][]["name"]=$slrows["name"];
            $listfl[$q]["sub"][]["sid"]=$slrows["sid"];
        }
        $q++;
    }
    $smarty->assign("listfl",$listfl);HTML循环 {foreach item=listfl from=$listfl}
       <dl class="qa_sort">
         <dt><a href="#">{$listfl.name}</a></dt>
         <dd>
             {foreach item=sub from=$listfl.sub}
             <a href="listfl" style="color:#F5691E;">{$sub.name}</a>
                {/foreach}
         </dd>
       </dl>
    {/foreach}
      

  14.   


    大侠。刚刚把问题解决了。有空白和ID和NAME不同步的原因是while($flrows=$questionfl->fetchRow()){
        $listfl[$q]["id"]=$flrows["id"];
        $listfl[$q]["name"]=$flrows["name"];
       
        $questionsl=$page->pagesql("select * from questionfl where sid='".$listfl[$q]["id"]."'");//二级分类
        while($slrows=$questionsl->fetchRow()){
            $listfl[$q]["sub"][]["id"]=$slrows["id"];
            $listfl[$q]["sub"][]["name"]=$slrows["name"];
            $listfl[$q]["sub"][]["sid"]=$slrows["sid"];
        }
        $q++;
    }
    $smarty->assign("listfl",$listfl);
    空了的中间的括号缺少一个循环数,导致数组赋值给ID过后,要向后移在赋值给NAME。如果在空白里面加一个循环变量就OK了。    while($slrows=$questionsl->fetchRow()){
          $listfl[$q]["sub"][$i]["id"]=$slrows["id"];
           $listfl[$q]["sub"][$i]["name"]=$slrows["name"];
           $i++;
        }
    像这样。就是一一对应的了。