Zebra_Mptt, a PHP class providing an implementation of the modified preorder tree traversal algorithm

Get the latest updates on this PHP library via RSS



You are currently browsing comments. If you would like to return to the full story, you can read the full entry here: “Zebra_Mptt, a PHP class providing an implementation of the modified preorder tree traversal algorithm”.

79 responses to “Zebra_Mptt, a PHP class providing an implementation of the modified preorder tree traversal algorithm”

Follow the comments via RSS
  • mrplugins, 2012-05-30, 16:32

    can you write an example to put the result array in a sistem? please

    Reply
    • hrubost, 2012-11-06, 14:06
      //code by acmol
      function array2ul($array) {
        $out="";
        foreach($array as $key => $elem){
          if(!is_array($elem)){
            $out=$out."$key:[$elem]";
          }
          else $out=$out."$key".array2ul($elem)."";
        }
        $out=$out."";
        return $out; 
      }
      
      echo array2ul($mtpp->get_tree());
  • mrplugins, 2012-05-30, 16:43

    list sistem like <ul><li>

    Reply
  • mrplugins, 2012-06-01, 08:39

    get_selectables give me an error:
    Strict Standards: Only variables should be passed by reference in C:\inetpub\mio\zebra\Zebra_Mptt.php on line 956

    Reply
    • Stefan Gabos, 2012-06-01, 20:04

      thanks!
      to fix it, change the whole block to

      // if the node has any parents
      if (count($parents) > 0) {
      
        $keys = array_keys($parents);
      
        // iterate through the array of parent nodes
        while (array_pop($keys) < $properties[$this->properties['right_column']])
      
          // and remove parents that are not parents of current node
          array_pop($parents);
      
      }
  • mrplugins, 2012-06-01, 20:52

    how can i order the array by title asc? is it possible?

    sorry for my english

    Reply
  • victor, 2012-07-17, 03:56

    function copy, not copy entire node with childrens into other node

    Reply
    • Stefan Gabos, 2012-07-17, 07:21

      thanks victor, i’ll have a look

      update

      victor, i did some tests and the copy method seems to be working fine. can you be more specific about how and why it is not working? thanks!

    • Victor, 2012-07-18, 02:53

      oki, example:

      child_node1
      |——–child 1-1
      |——–child 1-2
      |——–child 1-3

      child_node2

      copy(child_node1, child_node2)

      child_node2 =

      child_node2
      |———child_node1

      without child 1-1 etc…

    • Victor, 2012-07-18, 05:08

      I think the problem is when you call again get_tree

  • Victor, 2012-07-18, 05:17

    the first get_tree is correct, the second get_tree not.. a process reset parent id node.. check data table

    Reply
  • Victor, 2012-07-18, 13:44

    Hi Steffan, send you an email with 2 attachments. Thanks ๐Ÿ™‚

    Reply
  • Florencia, 2012-09-27, 11:58

    Thank you Stefan, your class saved me a lot of time and work, regrads from Argentina!

    Reply
    • Stefan Gabos, 2012-09-27, 12:57

      no, thank YOU for taking the time and posting back ๐Ÿ™‚

  • Gus, 2012-11-05, 03:14

    in : function get_path($node)

    $parents [] = $this->lookup [$node];
    should be changed to
    $parents [$node] = $this->lookup [$node];

    otherwise this will mess-up your array indicies

    ๐Ÿ™‚

    Reply
    • Stefan Gabos, 2012-11-05, 08:22

      it should make no difference as all indices in $parents will be unique anyway

  • Gus, 2012-11-06, 20:30

    >it should make no difference as all indices in $parents will be unique >anyway

    Previous parents have
    $parents[node_id] = node_info

    when you do

    $parents[] = [node_info]
    On the final go , the index for the last entry wiill not be the node id , but a +1 index PHP assigns…

    Reply
    • Stefan Gabos, 2012-11-06, 20:43

      oh, i get it now! you are right! the fixed version will be available soon for downloading. thanks a lot!

  • David, 2013-01-08, 14:28

    Hi Stefan,

    I’ve started to play around with Zebra_Mptt and immediately ran into a problem, which led me to look up the function. It appears that the mysql functions you use are being deprecated in future versions of PHP. Do you plan to update the library to be compatible with future versions of PHP?

    Thanks!

    Reply
    • Stefan Gabos, 2013-01-08, 18:12

      don’t worry, the mysql extension will most likely be available for the years to come; nevertheless, I do plan to port it to mysqli but cannot give you a time frame.

  • Kaeru, 2013-04-05, 19:40

    Sounds silly but how do I add in additional fields to be displayed?

    Reply
  • Kaeru, 2013-04-05, 22:03

    Also since this loads the entire tree into memory, how would this handle extended trees of say 100,000 levels?

    Reply
  • Kaeru, 2013-04-07, 22:01

    Did some testing and this is a fine example but probably would be better suited without the caching of the fields, good for small datasets but once you hit 10000 or more takes up a huge chunk of memory

    Reply
  • Edgar Veiga, 2013-05-10, 16:50

    Hi! first of all, thanks for the great work!

    I think I’ve spotted a bug in the method get_parent.

    You should be returning:
    $this->lookup[$this->lookup[$node][$this->properties[‘parent_column’]]]

    To ensure returning all of the parent properties and not only the ID.

    Best regards!

    Reply
    • Stefan Gabos, 2013-05-14, 06:36

      thanks, i’ll look into it

Leave a Reply

Your email address will not be published
You can use <strong>, <em>, <a>, <img>, <code>
Characters are not case-sensitive