Hi all,

I'm playing around with "Modified Preorder Tree Traversal" as discussed in an article on sitepoint <http://www.sitepoint.com/article/hierarchical-data-database/>, which includes this function:


<?php function display_tree($root) { � �// retrieve the left and right value of the $root node � �$result = mysql_query('SELECT lft, rgt FROM tree '. � � � � � � � � � � � � � 'WHERE title="'.$root.'";'); � �$row = mysql_fetch_array($result);

  � �// start with an empty $right stack
  � �$right = array();

  � �// now, retrieve all descendants of the $root node
  � �$result = mysql_query('SELECT title, lft, rgt FROM tree '.
  � � � � � � � � � � � � � 'WHERE lft BETWEEN '.$row['lft'].' AND '.
  � � � � � � � � � � � � � $row['rgt'].' ORDER BY lft ASC;');

  � �// display each row
  � �while ($row = mysql_fetch_array($result)) {
  � � � �// only check stack if there is one
  � � � �if (count($right)>0) {
  � � � � � �// check if we should remove a node from the stack
  � � � � � �while ($right[count($right)-1]<$row['rgt']) {
  � � � � � � � �array_pop($right);
  � � � � � �}
  � � � �}

  � � � �// display indented node title
  � � � �echo str_repeat(' �',count($right)).$row['title']."\n";

  � � � �// add this node to the stack
  � � � �$right[] = $row['rgt'];
  � �}
 }
 ?>

This is outputting a text-based tree of the data in the database, but what I'd like to do is modify it to output a series of nested ul's (unordered lists) to describe the nesting, rather than relying on spaces and newlines.

I've had a couple of attempts, with no luck... can someone shed some light on how this might be achieved?


--- Justin French http://indent.com.au -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php



Reply via email to