אוקי
נגיד ולפונקציה של הרקורסיה קוראים X, והיא מקבלת שני פרמטרים, הפרמטר הראשון הוא הID של האבא שנציג עכשיו את הבנים שלו ופרמטר נוסף בשם LEVEL שהוא הרמה שלנו בעומק העץ של הפורום. הקריאה לפונק' נעשית על ידי X(0,0) -> כלומר אנחנו ברמה 0 ואנחנו רוצים להראות את כל הבנים של אבא 0. לאבא 0 יש 3 בנים (1,2,3), עכשיו בלולאה נעבור על כל האחד מהם: עבור הראשון (1), נדפיס אותו למסך, ואז נקרא ל X(1,1 ) -> אנחנו ברמה 1 ורוצים את כל הבנים של אבא 1. לאבא 1 יש בן 1 (4), נדפיס אותו ונקרא ל X(4,2) -> לאבא 4 אין בנים לכן אנחנו חוזרים רמה אחת למעלה. עלינו רמה, אנחנו עכשיו בלולאה שמדפיסה את הבנים של אבא 1, ואין יותר בנים, לכן נחזור עוד רמה למעלה, ללולאה שמדפיסה את בניו של אבא 0. עכשיו נדפיס את 2 ונכנס ונקרא ל X(2,1) -> כדי לבדוק את יש בנים ל אבא 2. אין לי כח להמשיך לעבור על זה אבל אני מקווה שהבנת את הרעיון. וזה פחות או יורת המימוש של העניין, באבסטרקציה כמובן :
function Build_Forum_Tree( $parentID, $level=0) { $qSons=mysql_query("select * from forum_table where Parent_ID=$parentID"); while( $son = mysql_fetch_object($qSons) ) { MakeSpaceForLevel($level); //prints $level number of tabs print $son->Koteret; Build_Forum_Tree( $son->ID, $level+1 ); } mysql_free_result( $qSons ); } }
זה בגדול הרעיון, הקריאה הראשונית לפונק' היא
Build_Forum_Tree(0);
אני מקווה שזה עוזר לך.