"testnstree", // Table name "lvalname" => "lft", // Left pointer field name "rvalname" => "rgt"); // Right pointer field name $namefield = "name"; // Name of the table field with the name of the node include "class/nstrees.php"; $tree = new nestedTree($handle); // Connexion � la base de donn�es @mysql_connect($db_host, $db_username, $db_password) or die("Impossible de se connecter au serveur de base de donn�es"); @mysql_select_db($db_database) or die("Impossible de trouver la base de donn�es") ?> Classe nstrees : Page de test

Classe nstrees : Page de test

nstDeleteTree(); echo ("

Create Root

\n"); $root = $tree->nstNewRoot(array("name" => "'root'")); // Print the whole tree $tree->nstPrintTree(array($namefield)); print ("

Add 4 child nodes

\n"); $tree->nstNewLastChild($root,array($namefield => "'3'")); $tree->nstNewLastChild($tree->nstRoot(),array($namefield => "'4'")); // Keep this child in a variable $child = $tree->nstNewFirstChild($tree->nstRoot(),array($namefield => "'2'")); // Use the previous node to create a node before it in the hierarchy $tree->nstNewPrevSibling($child,array($namefield => "'1'")); // Print the whole tree $tree->nstPrintTree(array($namefield)); print ("

Add 3 child subnodes

\n"); $child = $tree->nstNewFirstChild($tree->nstGetNodeWhere($namefield."='3'"), array($namefield => "'3.3'")); $child = $tree->nstNewPrevSibling($child, array($namefield => "'3.1'")); $child = $tree->nstNewNextSibling($child, array($namefield => "'3.2'")); // Print the whole tree $tree->nstPrintTree(array($namefield)); print ("

Add 2 child sub-subnodes

\n"); $child = $tree->nstNewFirstChild($child, array($namefield => "'3.2.1'")); $child = $tree->nstNewNextSibling($child, array($namefield => "'3.2.2'")); $child = $tree->nstNewFirstChild($child, array($namefield => "'3.2.2.1'")); $child = $tree->nstNewFirstChild($child, array($namefield => "'3.2.2.1.1'")); $child = $tree->nstNewFirstChild($child, array($namefield => "'3.2.2.1.1.1'")); // Print the whole tree $tree->nstPrintTree(array($namefield)); print ("

Move subtree 3.2 after 2

\n"); $child = $tree->nstMoveToNextSibling($tree->nstGetNodeWhere($namefield."='3.2'"), $tree->nstGetNodeWhere($namefield."='2'")); // Print the whole tree $tree->nstPrintTree(array($namefield)); print ("

Move subtree 3.2 back previous to 3.3

\n"); $child = $tree->nstMoveToPrevSibling($tree->nstGetNodeWhere($namefield."='3.2'"), $tree->nstGetNodeWhere($namefield."='3.3'")); // Print the whole tree $tree->nstPrintTree(array($namefield)); print ("

Print node properties

\n"); $node = $tree->nstGetNodeWhere($namefield."='3.2'"); print ("First child of 3.2:  ".$tree->nstNodeAttribute($tree->nstFirstChild($node), $namefield)."
\n"); print ("Last child of 3.2:  ".$tree->nstNodeAttribute($tree->nstLastChild($node), $namefield)."
\n"); print ("Prev sibling of 3.2:  ".$tree->nstNodeAttribute($tree->nstPrevSibling($node), $namefield)."
\n"); print ("Next sibling of 3.2:  ".$tree->nstNodeAttribute($tree->nstNextSibling($node), $namefield)."
\n"); print ("Ancestor of 3.2:  ".$tree->nstNodeAttribute($tree->nstAncestor($node), $namefield)."
\n"); $node = $tree->nstGetNodeWhere($namefield."='3'"); print ("
First child of 3:  ".$tree->nstNodeAttribute($tree->nstFirstChild($node), $namefield)."
\n"); print ("Last child of 3:  ".$tree->nstNodeAttribute($tree->nstLastChild($node), $namefield)."
\n"); print ("Prev sibling of 3:  ".$tree->nstNodeAttribute($tree->nstPrevSibling($node), $namefield)."
\n"); print ("Next sibling of 3:  ".$tree->nstNodeAttribute($tree->nstNextSibling($node), $namefield)."
\n"); print ("Ancestor of 3:  ".$tree->nstNodeAttribute($tree->nstAncestor($node), $namefield)."
\n"); $node = $tree->nstGetNodeWhere($namefield."='1'"); print ("
First child of 1:  ".$tree->nstNodeAttribute($tree->nstFirstChild($node), $namefield)."
\n"); print ("Last child of 1:  ".$tree->nstNodeAttribute($tree->nstLastChild($node), $namefield)."
\n"); print ("Prev sibling of 1:  ".$tree->nstNodeAttribute($tree->nstPrevSibling($node), $namefield)."
\n"); print ("Next sibling of 1:  ".$tree->nstNodeAttribute($tree->nstNextSibling($node), $namefield)."
\n"); print ("Ancestor of 1:  ".$tree->nstNodeAttribute($tree->nstAncestor($node), $namefield)."
\n"); print ("

Print Boolean properties (1=yes, empty=no)

\n"); $node = $tree->nstGetNodeWhere($namefield."='3.2'"); print ("Node 3.2:   has anc:".$tree->nstHasAncestor($node) ."  has next sibl:".$tree->nstHasNextSibling($node) ."  has prev sibl:".$tree->nstHasPrevSibling($node) ."  has children:".$tree->nstHasChildren($node) ."
\n"); $node = $tree->nstGetNodeWhere($namefield."='3'"); print ("Node 3:   has anc:".$tree->nstHasAncestor($node) ."  has next sibl:".$tree->nstHasNextSibling($node) ."  has prev sibl:".$tree->nstHasPrevSibling($node) ."  has children:".$tree->nstHasChildren($node) ."
\n"); $node = $tree->nstGetNodeWhere($namefield."='1'"); print ("Node 1:   has anc:".$tree->nstHasAncestor($node) ."  has next sibl:".$tree->nstHasNextSibling($node) ."  has prev sibl:".$tree->nstHasPrevSibling($node) ."  has children:".$tree->nstHasChildren($node) ."
\n"); $node = $tree->nstRoot(); print ("Node root:   has anc:".$tree->nstHasAncestor($node) ."  has next sibl:".$tree->nstHasNextSibling($node) ."  has prev sibl:".$tree->nstHasPrevSibling($node) ."  has children:".$tree->nstHasChildren($node) ."
\n"); print ("

Print level values

\n"); print ("Level of root= ".$tree->nstLevel($tree->nstRoot())."
\n"); print ("Level of node 3= ".$tree->nstLevel($tree->nstGetNodeWhere($namefield."='3'"))."
\n"); print ("Level of node 3.2= ".$tree->nstLevel($tree->nstGetNodeWhere($namefield."='3.2'"))."
\n"); print ("Level of node 3.2.1= ".$tree->nstLevel($tree->nstGetNodeWhere($namefield."='3.2.1'"))."
\n"); print ("

Walk tree - Preorder:

\n"); $walk = $tree->nstWalkPreorder ($tree->nstRoot()); print ("INIT-LEVEL=".$tree->nstWalkLevel($walk)."
\n"); while($node = $tree->nstWalkNext($walk)){ print ("L".$tree->nstWalkLevel($walk).":next" .$tree->nstNodeAttribute($node, $namefield)."-curr" .$tree->nstNodeAttribute($tree->nstWalkCurrent($walk), $namefield)." " ."  
"); } print ("
\n"); print ("

Delete subtree 3.2 without keeping children

\n"); $child = $tree->nstDelete($tree->nstGetNodeWhere($namefield."='3.2'"),false); // Print the whole tree $tree->nstPrintTree(array($namefield)); print ("

Delete subtree 3 and outdent children

\n"); $child = $tree->nstDelete($tree->nstGetNodeWhere($namefield."='3'"),treu); // Print the whole tree $tree->nstPrintTree(array($namefield)); mysql_close(); ?>