TShopping

標題: SMRTY 怎麼做CCS下拉式功能表(導覽列)? [打印本頁]

作者: woff    時間: 2010-4-13 15:18
標題: SMRTY 怎麼做CCS下拉式功能表(導覽列)?
小弟遇到一些困難
在MYSQL撈出資料時
有類別及文章兩個資料表
分別為class及state
在PHP的寫法是先撈出類別再撈出類別相關文章
但是目前小弟結合SMARTY樣板引擎
發現了 一件事情
我在PHP可寫兩個迴圈就能處理掉此問題
但是SMARTY並不能跑兩次迴圈
  1. {section name="net" loop=$sm_class}
  2.    {section name="net" loop=$sm_state}
  3.    {/section}
  4. {/section}
複製代碼
SMARTY根本搞不懂雙層迴圈

PHP丟資料時這樣寫
  1. //提取導覽列資料
  2. $sql="SELECT * FROM net_class ORDER BY num ASC";
  3. $query=$db->query($sql);
  4. while ($row_class=$db->fetch_array($query)) {
  5.   $sm_class[]=array("cid"=>$row_class[cid],"num"=>$row_class[num],"name"=>$row_class[name]);
  6. }
  7. $smarty->assign("sm_class",$sm_class);
  8. //提取首頁文章資料
  9. $sql="SELECT * FROM net_state ORDER BY num ASC";
  10. $query=$db->query($sql);
  11. while ($row_state=$db->fetch_array($query)) {
  12.   $sm_state[]=array("num"=>$row_state[num],"subject"=>$row_state[subject],"content"=>$row_state[content]);
  13. }
  14. $smarty->assign("sm_state",$sm_state);
複製代碼
雖然PHP有把資料傳到樣板上
但是 SMARTY根本不認識他
因為每個類別要撈出哪幾個類別相關文章根本搞不清楚
就算我把
  1. $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
經過藍色小舖

alight大大指導後

問題已解決

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

smarty只幫你輸出...

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

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

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

  5.         $sm_class[]=array(
  6.                 "cid"=>$row_class[cid],
  7.                 "num"=>$row_class[num],
  8.                 "name"=>$row_class[name]
  9.         );
  10. }



  11. //提取首頁文章資料

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

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

  14. $sm_state=array();

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

  17.         $sm_state[]=array(
  18.                 "cid"=>$row_state[cid],
  19.                 "num"=>$row_state[num],
  20.                 "subject"=>$row_state[subject],
  21.                 "content"=>$row_state[content]
  22.         );

  23. }

  24. //判斷每篇文章屬於哪個類別
  25. foreach($sm_state as $idx => $item)
  26. {
  27.         foreach($sm_class as $idx2 => $item2)
  28.         {
  29.                 if($item["cid"]==$item2["cid"])
  30.                 {
  31.                         $data[$idx2][]=$item;
  32.                         break;
  33.                 }
  34.         }
  35. }


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

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

  3. {section name="idx2" loop=$data[idx]}
  4. 我是文章標題 {$data[idx][idx2].subject}
  5. {/section}

  6. {/section}
複製代碼





歡迎光臨 TShopping (http://www.tshopping.com.tw/) Powered by Discuz! X3.2