The same can be achieved by using the excellent PEAR HTML_TreeMenu class. Key advantage, of course, is that the API is in PHP. HTH Ignatius _________________________ ----- Original Message ----- From: "Paul Miller" <pmiller@xxxxxxxxxxxxxxx> To: <php-db@xxxxxxxxxxxxx> Sent: Tuesday, March 30, 2004 4:22 PM Subject: RE: Tree structure - how to show only current branch ?? > Ya it has - that is a great script! > > -----Original Message----- > From: Galbreath, Mark A [mailto:GalbreathMA@xxxxxxxxx] > Sent: Tuesday, March 30, 2004 7:15 AM > To: '-{ Rene Brehmer }-'; 'php-db@xxxxxxxxxxxxx' > Subject: RE: Tree structure - how to show only current branch > ?? > > > Already been done: > > http://www.destroydrop.com/javascripts/tree/ > > Mark > > -----Original Message----- > From: -{ Rene Brehmer }- [mailto:metalbunny@xxxxxxxxxxxxxx] > Sent: Tuesday, March 30, 2004 7:50 AM > To: php-db@xxxxxxxxxxxxx > Subject: Tree structure - how to show only current branch ?? > > > Ok, Tom Reed got my thinker running big time ... and I've been trying to > > build an expandable and modifiable tree structure where it only displays > > the branch leading to the current folder... Showing the entire tree is > easy, but how do I change the code to only display the branch we need??? > > ... I've never coded visual trees before, so this is new for me ... > > Found several samples with google where the code relies on the structure > > being fixed in the DB. What I want to create is the possibility to mode > folders around within the tree ... literally moving branches from one > place > to another, while retaining their content. > > DB structure is simply this (I want to get rid of the level field if > it's > at all possible to count the levels with recursive functions, but for > now > it stays). > > folderID int(10) UNSIGNED auto-increment > parentID int(10) UNSIGNED > level tinyint(3) UNSIGNED > name varchar(255) > > (I'm fully aware that int may be overkill, but this is for testing > purposes...) > > test data: > <http://localhost/phpmyadmin/sql.php?lang=en-iso-8859-1&server=1&db=tree > +tes > t&table=folders&pos=0&session_max_rows=30&disp_direction=horizontal&repe > at_c > ells=100&dontlimitchars=0&sql_query=SELECT++%2A+%0AFROM++%60folders%60++ > ORDE > R+BY+%60folderID%60+ASC>folderID > <http://localhost/phpmyadmin/sql.php?lang=en-iso-8859-1&server=1&db=tree > +tes > t&table=folders&pos=0&session_max_rows=30&disp_direction=horizontal&repe > at_c > ells=100&dontlimitchars=0&sql_query=SELECT++%2A+%0AFROM++%60folders%60++ > ORDE > R+BY+%60parentID%60+ASC>parentID > <http://localhost/phpmyadmin/sql.php?lang=en-iso-8859-1&server=1&db=tree > +tes > t&table=folders&pos=0&session_max_rows=30&disp_direction=horizontal&repe > at_c > ells=100&dontlimitchars=0&sql_query=SELECT++%2A+%0AFROM++%60folders%60++ > ORDE > R+BY+%60level%60+ASC>level > <http://localhost/phpmyadmin/sql.php?lang=en-iso-8859-1&server=1&db=tree > +tes > t&table=folders&pos=0&session_max_rows=30&disp_direction=horizontal&repe > at_c > ells=100&dontlimitchars=0&sql_query=SELECT++%2A+%0AFROM++%60folders%60++ > ORDE > R+BY+%60name%60+ASC>name > > 1 0 0 parent 1 > 2 0 0 parent 2 > 3 0 0 parent 3 > 4 0 0 parent 4 > 5 0 0 parent 5 > 6 1 1 child of 1 > 7 3 1 child of 3 > 8 1 1 child 2 of 1 > 9 6 2 sub-child 1 > 10 6 2 sub-child 2 > 11 10 4 sub-sub 1 > 12 10 4 sub-sub 2 > 13 11 5 sub-sub-sub 1 > > Current code looks like this, the 2 subfunctions prints the branches, > the > main function below prints the root structure...: > > function count_children($parentID) { > // count number of children in folder > $count = mysql_query("SELECT COUNT(*) AS num_children FROM folders > WHERE > `parentID`='$parentID'"); > $numrows = mysql_fetch_array($count); > > return $numrows['num_children']; > } > > function print_children($parentID) { > // print the branch of sub-folders > $children = mysql_query("SELECT folderID,level,name FROM folders > WHERE > `parentID`='$parentID'"); > > while($child = mysql_fetch_array($children)) { > $folderID = $child['folderID']; > $name = $child['name']; > $level = $child['level']; > > for ($i = 0; $i < $level; $i++) { > echo('·'); > } > echo("· <a > href=\"test1.php?folderID=$folderID\">$name</a><br>\n"); > > // let's find children... recursive call !! > if (count_children($folderID) > 0) { > print_children($folderID); > } > } > } > > // get root parents -- main tree function > $parents = mysql_query("SELECT folderID,name FROM folders WHERE > `parentID`='0'"); > > while($folder = mysql_fetch_array($parents)) { > $folderID = $folder['folderID']; > $name = $folder['name']; > > echo("· <a > href=\"test1.php?folderID=$folderID\">$name</a><br>\n"); > > // let's find children... > if (count_children($folderID) > 0) { > print_children($folderID); > > } > } > > > The output of all this looks like this: > > . <http://localhost/tests/tree%20structure/test1.php?folderID=1>parent 1 > .. <http://localhost/tests/tree%20structure/test1.php?folderID=6>child > of 1 ... > <http://localhost/tests/tree%20structure/test1.php?folderID=9>sub-child > 1 > ... > <http://localhost/tests/tree%20structure/test1.php?folderID=10>sub-child > 2 > ..... > <http://localhost/tests/tree%20structure/test1.php?folderID=11>sub-sub > 1 > ...... > <http://localhost/tests/tree%20structure/test1.php?folderID=13>sub-sub-s > ub 1 ..... > <http://localhost/tests/tree%20structure/test1.php?folderID=12>sub-sub > 2 > .. <http://localhost/tests/tree%20structure/test1.php?folderID=8>child 2 > of 1 . > <http://localhost/tests/tree%20structure/test1.php?folderID=2>parent 2 . > <http://localhost/tests/tree%20structure/test1.php?folderID=3>parent 3 > .. <http://localhost/tests/tree%20structure/test1.php?folderID=7>child > of 3 . > <http://localhost/tests/tree%20structure/test1.php?folderID=4>parent 4 . > <http://localhost/tests/tree%20structure/test1.php?folderID=5>parent 5 > > What I wanna do is make it possible to click on, say, 'sub-child 2', and > > have it a. expand the entire branch under 'parent 1' leading to > 'sub-child > 2', but not expand any other branches in the root structure, AND, b. > have > it not expand beyond showing the sub-folders of 'sub-child 2' > > One thing at a time, of course, figure out a. first, then b. shouldn't > be > all that difficult to handle (or what ?)... > > Last tree structure I did was mostly logical, not visual ... and it was > done in VB long ago ... so it's not code that can be recycled... > > > TIA > > Rene > -- > Rene Brehmer > aka Metalbunny > > ~ If you don't like what I have to say ... don't read it ~ > > http://metalbunny.net/ > References, tools, and other useful stuff... > > -- > PHP Database Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- > PHP Database Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- > PHP Database Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php