• 0

Recursive function for tree like structure


Question

I'm struggling to get my head around this one, i've had a few attempts and failed miserably.

 

Basically I have a list of categories in a database, each with an ID. A category can have a parent category.

 

I need to output the structure in some sort of tree

 

Main category

- Child 1

- Child 2

Another category

- Child 1

- Child 2

 

Here is a very basic structure example.

 

59213c324c21b_ScreenShot2017-05-21at08_04_49.thumb.png.0105bbb0f643ad39380c850786cbe710.png

 

In this case, Fruit is a child of Food and Shoes is a child of Clothing.

 

I can manage it quite easily performing several queries but I need to do it as efficient as possible with one query and whatever is the fastest method to generate the tree like structure, either a loop or recursive function.

 

Any ideas?

 

Thanks

 

 

1 answer to this question

Recommended Posts

  • 0

There are multiple structures, for very large menus I use the nested set model explained here:

http://stackoverflow.com/questions/5916482/php-mysql-best-tree-structure

 

Otherwise it's a matter of making an sql function that grabs all direct childs of an id and call it again for all those items and again for all those items till items don't have any children.

 

In PHP it's the same, you have a $items array with id, parentId and name as example:

function awesome($parentId) {
    $tree = "";
    foreach($items as $item) {
        if($item->parenId == $parentId) {
            $tree += $item->name;
            $tree += awesome($item->id);
        }
    }
    return $tree;
}

 

Then call it:

 

$awesomeTree = awesome(NULL);

 

You can't avoid loops or recursion when you use a structure with ids and parentIds, by defining a sql function that is recursive it's not such a big problem for normal sized menus. For large menus it can become slow so I would use a different structure for that as I mentioned above, keep in mind that such structures are slower when you edit menus, there's always a trade off.

 

More info and SQL examples: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

 

This topic is now closed to further replies.
  • Posts

    • "The company has recently announced the forming of a new agentic AI team to develop an agentic AI framework for use in robotics." I wonder if any of their executives attented, "Microsoft Build 2025" last month?
    • Microsoft Build conference to leave Seattle after years in the city by Pradeep Viswanathan Microsoft Build is a flagship annual developer conference held by Microsoft since 2011. In 2017, Microsoft relocated Build from San Francisco to its home turf in Seattle. The proximity to its main campus allowed greater participation from its own engineers and executives, offering attendees a more integrated experience. Today, Jonathan Choe revealed on X that Microsoft has decided to move its Build developer conference out of Seattle. He discovered this information via an email sent by Visit Seattle to its members. Visit Seattle is a private, non-profit destination marketing organization that promotes travel to Seattle and King County. As a result of the move, Seattle-based hotels could lose approximately 9,314 room nights annually. Surprisingly, Visit Seattle’s message included several details about Microsoft’s reasons for the change. The primary reason appears to have come from within Microsoft itself. The company feels that Build lost momentum post-COVID, and the scheduling conflict with Google I/O, a competing event, has made it harder to attract the intended audience. Microsoft’s leadership believes they can better re-energize the program and boost attendance by moving it out of Seattle. The note even suggests that Build will likely be relocated to San Francisco or Las Vegas in 2026. Another factor contributing to the decision is the condition of the city. Last month, during the conference, Microsoft leadership and attendees walked between the Hyatt Regency and the Arch building on 8th Street. Reportedly, there were complaints about the general uncleanliness of the area, the visible presence of individuals using drugs, and unhoused individuals in a recurring tent in the Arch Tunnel. Visit Seattle believes these concerns also played a role in Microsoft’s final decision to relocate Build. Given Microsoft's high-profile presence and the economic impact of the event, this relocation may spark a political storm within the Seattle mayor’s office, drawing criticism over the city’s handling of downtown conditions.
    • This is very exciting, happy to see it come back to RC.
    • What did you have to do for that? Are the steps similar to W10?
  • Recent Achievements

    • Week One Done
      daelos earned a badge
      Week One Done
    • One Month Later
      daelos earned a badge
      One Month Later
    • Mentor
      Karlston went up a rank
      Mentor
    • One Month Later
      EdwardFranciscoVilla earned a badge
      One Month Later
    • One Month Later
      MoyaM earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      491
    2. 2
      snowy owl
      252
    3. 3
      +FloatingFatMan
      251
    4. 4
      ATLien_0
      216
    5. 5
      +Edouard
      160
  • Tell a friend

    Love Neowin? Tell a friend!