TShopping

 找回密碼
 註冊
搜索
查看: 2209|回復: 0

[分享] 如何用PHP及MySQL建立多層導覽列

[複製鏈接]
發表於 2017-3-16 08:11:57 | 顯示全部樓層 |閱讀模式
 
Push to Facebook
在寫多層導覽列時,會從資料庫撈出資料
主要欄位有

cid,parent_id,name

以下是PHP代碼
  1. //從TABLE撈出資料
  2. $sql="SELECT * FROM net_class ORDER BY cid 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],"img"=>$row_class[img],"parent_id"=>$row_class[parent_id]);
  6. }

  7. function has_children($rows,$cid) {
  8.           foreach ($rows as $rowf) {
  9.                 if ($rowf['parent_id'] == $cid)
  10.                   return true;
  11.           }
  12.           return false;
  13. }
  14.         
  15. function build_menu($rows,$parent=0)
  16. {  
  17.           $result = "<ul>";
  18.           foreach ($rows as $row)
  19.           {
  20.                 if ($row['parent_id'] == $parent){
  21.                   $result.= "<li>{$row[name]}";
  22.                   if (has_children($rows,$row['cid']))
  23.                         $result.= build_menu($rows,$row['cid']);
  24.                   $result.= "</li>";
  25.                 }
  26.           }
  27.           $result.= "</ul>";
  28.           return $result;
  29. }
  30. echo build_menu($sm_class);
複製代碼

經過筆者實測,此種多重選單最為簡單明白

或是
  1. function buildTree(array $elements, $parentId = 0) {
  2.     $branch = array();

  3.     foreach ($elements as $element) {
  4.         if ($element['parent_id'] == $parentId) {
  5.             $children = buildTree($elements, $element['id']);
  6.             if ($children) {
  7.                 $element['children'] = $children;
  8.             }
  9.             $branch[] = $element;
  10.         }
  11.     }

  12.     return $branch;
  13. }

  14. $tree = buildTree($rows);
複製代碼

參考文章
http://stackoverflow.com/questio ... sql-build-tree-menu


http://stackoverflow.com/questio ... rom-database-result

 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



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

GMT+8, 2024-4-19 09:15 , Processed in 0.049488 second(s), 23 queries .

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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