PhpRiot
Follow phpriot on Twitter
Sponsored Link
Download Article
Download this article or the entire “Implementing An N-Level Nested Tree In PHP And PostgreSQL” series with all listings and files.




More information
Become Zend Certified

Prepare for the ZCE exam using our quizzes (web or iPad/iPhone). More info...


When you're ready get 7.5% off your exam voucher using voucher CJQNOV23 at the Zend Store
Free iPad/iPhone App
Available on the App Store

  • PHP manual
  • Zend Framework manual
  • Smarty manual
  • PHP articles
  • PHP training

Implementing An N-Level Nested Tree In PHP And PostgreSQL, Part 1

Node Data Stored

We can represent this tree using just 3 pieces of information about each node:

  • A unique identifier (ID) for each node
  • Its title (e.g. General Resources)
  • The ID of its parent node (e.g. for the Links node, this would be the ID of General Resources)

Why the parent model is good

If we represent the tree using only the three items of information above, we can easily determine the following about a node:

  • We know it’s parent ID
  • The node’s siblings are all the other nodes with the same parent ID
  • The node’s children are all the nodes with a parent ID of the node’s ID.

Why the parent model is bad

Using only the ID, title and parent ID, it’s hard to determine anything other than siblings or children. For example, it would be hard to find every item within a single section, or to find the path from the root node to a node say 5 levels deep.

By hard, it can still be done, but will either require an arbitrary number of SQL statements, or require reading in the entire tree and processing it recursively.

In This Article