簡體   English   中英

動態多級菜單php的遞歸函數

[英]recursive function for dynamic multilevel menu php

我有一個像這樣的mysql表結構:

CREATE TABLE IF NOT EXISTS menu(
id INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY,
p_id INT(5), -- parent id
sort_id INT(5) NOT NULL, -- for position
title VARCHAR(50) NOT NULL,
etc ...);

數據結構如下所示:

id | p_id | sort_id | title 
1  | NULL |    1    |  root_1
2  |  1   |    1    |  sub1 of root_1
3  |  1   |    2    |  sub2 of root_1
4  | NULL |    2    |  root_2
5  |  2   |    1    |  sub1 of root_2
6  |  2   |    2    |  sub2 of root_2
7  |  3   |    1    |  sub1 of `sub2 of root_1`

我已經創建了一個php腳本來顯示一個級別的子菜單,但是我無法決定如何獲得其他級別。 我認為需要遞歸函數,例如,才能在此任務中獲取sub1 of sub2 of root_1元素sub1 of sub2 of root_1

如果有人對在這種情況下如何開始創建遞歸函數有任何想法,請告訴我,謝謝:)

最好首先將其轉換為樹型結構:

Menu Top
  |
Nodes with NULL p_id
  |
Children

您可以通過創建包含子項數組的MenuNode類來實現此目的。 您不必那樣做,但是它將使創建遞歸函數輸出菜單變得更加容易。

函數generate_menu_list($ parent_id){$ result = mysql_query(“ SELECT * FROM menu WHERE p_id ='$ parent_id'by sort_id”); if(結果){而($ row = mysql_fetch_array($ result)){
$ count = mysql_query(“ SELECT count(0)as cnt FROM menu_master WHERE parent_id ='”。$ row ['id']。“'”); $ countrow = mysql_fetch_array($ count);

    echo '<li><a href="'$linktoredirect.'"><span class="fa fa-user"></span>'.$row['title '].'</a> ';

     if($countrow['cnt']>0)
     {
        echo '<ul>'; 
        $this->generate_menu_list($row['id']);  
        echo '</ul>';
     }  
     echo '</li>';
  } 
}   

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM