woff 發表於 2010-4-13 15:18:41

SMRTY 怎麼做CCS下拉式功能表(導覽列)?

小弟遇到一些困難
在MYSQL撈出資料時
有類別及文章兩個資料表
分別為class及state
在PHP的寫法是先撈出類別再撈出類別相關文章
但是目前小弟結合SMARTY樣板引擎
發現了 一件事情
我在PHP可寫兩個迴圈就能處理掉此問題
但是SMARTY並不能跑兩次迴圈{section name="net" loop=$sm_class}
   {section name="net" loop=$sm_state}
   {/section}
{/section}
SMARTY根本搞不懂雙層迴圈

PHP丟資料時這樣寫//提取導覽列資料
$sql="SELECT * FROM net_class ORDER BY num ASC";
$query=$db->query($sql);
while ($row_class=$db->fetch_array($query)) {
$sm_class[]=array("cid"=>$row_class,"num"=>$row_class,"name"=>$row_class);
}
$smarty->assign("sm_class",$sm_class);
//提取首頁文章資料
$sql="SELECT * FROM net_state ORDER BY num ASC";
$query=$db->query($sql);
while ($row_state=$db->fetch_array($query)) {
$sm_state[]=array("num"=>$row_state,"subject"=>$row_state,"content"=>$row_state);
}
$smarty->assign("sm_state",$sm_state);雖然PHP有把資料傳到樣板上
但是 SMARTY根本不認識他
因為每個類別要撈出哪幾個類別相關文章根本搞不清楚
就算我把$sql="SELECT * FROM net_state where cid='$cid' ORDER BY num ASC";
假設$cid是搜尋類別項目的索引鍵
這樣撈到了也無法達到 http://www.kingpc.com.tw網站 左側欄位這個目的
請問知道大大 這PHP 語法要怎麼改寫才能讓SMARTY樣板引擎能達到我的要求呢?

woff 發表於 2010-4-15 18:59:30

經過藍色小舖

的alight大大指導後

問題已解決

在php先做文章的分類...

smarty只幫你輸出...

php$sql="SELECT * FROM net_class ORDER BY num ASC";

$query=$db->query($sql);

while ($row_class=$db->fetch_array($query))
{

      $sm_class[]=array(
                "cid"=>$row_class,
                "num"=>$row_class,
                "name"=>$row_class
      );
}



//提取首頁文章資料

$sql="SELECT * FROM net_state ORDER BY num ASC";

$query=$db->query($sql);

$sm_state=array();

while ( $row_state=$db->fetch_array($query))
{

      $sm_state[]=array(
                "cid"=>$row_state,
                "num"=>$row_state,
                "subject"=>$row_state,
                "content"=>$row_state
      );

}

//判斷每篇文章屬於哪個類別
foreach($sm_state as $idx => $item)
{
      foreach($sm_class as $idx2 => $item2)
      {
                if($item["cid"]==$item2["cid"])
                {
                        $data[$idx2][]=$item;
                        break;
                }
      }
}


$smarty->assign("sm_class",$sm_class);
$smarty->assign("data",$data);
section 裡面的name 就是他的索引,你兩個索引重複了,他當然撈不到資料

smarty{section name="idx" loop=$sm_class}
我是類別標題 {$sm_class.name}

{section name="idx2" loop=$data}
我是文章標題 {$data.subject}
{/section}

{/section}
頁: [1]
查看完整版本: SMRTY 怎麼做CCS下拉式功能表(導覽列)?