Re: [請益] PHP怎麼寫樹狀清單

看板PHP作者 (huge)時間16年前 (2009/12/03 23:12), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
※ 引述《knuckles (那克斯)》之銘言: : ※ 引述《wallsem (小樂)》之銘言: : : 最近想用php寫樹狀清單 : : 想問一下~要怎麼寫?! : : 我要資料庫新增,目錄或子目錄就會增加... : : 一定要用迴圈才可以嗎~~ : : 有沒有其他的方法!! : php怎麼做樹狀結構我以前也想了好久 : 講一下我現在的做法,給你參考一下 : 像這樣的樹狀結構: 只要在資料庫存成: : + A + E id name parent_id : | | : | + F + I 1 A 0 每個node都有一個id : | | 2 B 0 以及這個node的上層(parent) : | + J 3 C 0 是哪個node : | 4 D 0 : + B + G 5 E 1 : | | 6 F 1 : | + H 7 G 2 : | 8 H 2 : + C 9 I 6 : | 10 J 6 : + D : 一開始只要把parent是0的node列出來,即為第一層選單 : 如果選擇A進入(A的id為1),就把parent為1的node列出來,即為A的下一層選單:E、F : 選擇F進入(F的id為6),就把parent為6的node列出來,即為F的下一層選單:I、J : 如果要回上一層,就找出id為6的node F,他的parent為 1,把parent是1的node列出來, : 就回到上一層選單了 不介意的話不妨參考一下, 雖然是用ruby寫的,不過裡面的東西應該差不了太多 strSrc可以代入空字串(這是小弟拿來加prefix用的) def render_elem(strSrc, tid) dstString = "" t = Trouble.find_by_id(tid) if t.child_ids.size > 0 t.child_ids.each do |elem| temp = Trouble.find_by_id(elem) if temp.is_end? dstString += "<li><span class=\"file\"><a href=\"#{trouble_path(temp)}\">#{temp.name}</a></span><ul>#{render_elem(strSrc, elem)}</ul></li>" else dstString += "<li><span class=\"folder\">#{temp.name}</span><ul>#{render_elem(strSrc, elem)}</ul></li>" end end end return dstString end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.10.5.203
文章代碼(AID): #1B5zLRzm (PHP)
討論串 (同標題文章)
文章代碼(AID): #1B5zLRzm (PHP)