TShopping

 找回密碼
 註冊
搜索
查看: 2879|回復: 1
打印 上一主題 下一主題

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2010-4-13 15:18:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook
小弟遇到一些困難
在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樣板引擎能達到我的要求呢?

 

臉書網友討論
2#
 樓主| 發表於 2010-4-15 18:59:30 | 只看該作者
經過藍色小舖

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}
複製代碼

版主招募中

*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-5-4 16:07 , Processed in 0.084927 second(s), 18 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表