<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xml:base="https://www.webmaster-forums.net/crss/node/1041281" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title></title>
    <link>https://www.webmaster-forums.net/crss/node/1041281</link>
    <description></description>
    <language>en</language>
          <item>
    <title>I thought I would post back</title>
    <link>https://www.webmaster-forums.net/web-programming-and-application-development/mysql-query-show-order-infinite-or-recursive-page-depth#comment-1230692</link>
    <description> &lt;p&gt;I thought I would post back with what I ended up doing in case people were following.&lt;/p&gt;
&lt;p&gt;I mostly followed that Sitepoint article that Matt posted except for a couple things.&lt;/p&gt;
&lt;p&gt;1) I added an extra field in the database for the page depth, which is used to know how much to indent the page when creating a list.  The article had some complex &amp;amp; confusing algorithm for finding it, but I figured that it doesn&#039;t change dynamically unless we edit a page, so why not store it in the table?  It saves CPU &amp;amp; processing time when forming a page list.&lt;/p&gt;
&lt;p&gt;2) I didn&#039;t implement the way of adding/deleting pages w/o reforming the entire tree...because I&#039;m lazy. Calling the rebuild_tree() function when I create/delete pages is not a big deal.  Optimizing the method of showing pages to visitors is way more important.&lt;/p&gt;
&lt;p&gt;Here is the final function that I am using.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;public function &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;rebuild_tree&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$parent_id &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= -&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$left &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$depth &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= -&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;/* the right value of this node is the left value + 1 */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$right &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$left &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;+ &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;/* get all children of this node */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;db&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;SELECT page_id FROM Pages WHERE parent_id = &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$parent_id&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt; ORDER BY created DESC&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$query&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;result_array&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;() as &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$row&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;/* does this page have children? */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$right &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;rebuild_tree&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$row&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;page_id&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;], &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$right&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$depth &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;+ &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;/* update this page with the (possibly) new left, right, and depth values */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;db&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;UPDATE Pages SET lft = &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$left&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;, rgt = &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$right&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;, depth = &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$depth&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt; WHERE page_id = &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$parent_id&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt; ORDER BY created DESC LIMIT 1&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;/* return the right value of this node + 1 */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;return &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$right &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;+ &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
 </description>
     <pubDate>Wed, 18 Jun 2008 03:25:20 +0000</pubDate>
 <dc:creator>pr0gr4mm3r</dc:creator>
 <guid isPermaLink="false">comment 1230692 at https://www.webmaster-forums.net</guid>
  </item>
  <item>
    <title>Pro MySQL. I love it. It</title>
    <link>https://www.webmaster-forums.net/web-programming-and-application-development/mysql-query-show-order-infinite-or-recursive-page-depth#comment-1230581</link>
    <description> &lt;p&gt;&lt;a href=&quot;http://www.amazon.com/MySQL-Experts-Voice-Open-Source/dp/159059505X/&quot;&gt;Pro MySQL&lt;/a&gt;. I love it. It makes me seem so smart on these forums &lt;img src=&quot;https://www.webmaster-forums.net/misc/smileys/smile.png&quot; title=&quot;Smiling&quot; alt=&quot;Smiling&quot; class=&quot;smiley-content&quot; /&gt;. It&#039;s one of the only tech books I&#039;ve read from cover to cover. I learned a ton about MySQL and SQL in general.&lt;/p&gt;
 </description>
     <pubDate>Thu, 12 Jun 2008 16:07:16 +0000</pubDate>
 <dc:creator>teammatt3</dc:creator>
 <guid isPermaLink="false">comment 1230581 at https://www.webmaster-forums.net</guid>
  </item>
  <item>
    <title>That sitepoint article is</title>
    <link>https://www.webmaster-forums.net/web-programming-and-application-development/mysql-query-show-order-infinite-or-recursive-page-depth#comment-1230580</link>
    <description> &lt;p&gt;That sitepoint article is exactly what I need - thanks!  I feel better knowing I was on the right track with the PHP solution.  The code in that article strongly resembles the function I wrote up. &lt;img src=&quot;https://www.webmaster-forums.net/misc/smileys/smile.png&quot; title=&quot;Smiling&quot; alt=&quot;Smiling&quot; class=&quot;smiley-content&quot; /&gt;&lt;/p&gt;
&lt;p&gt;What is this book you speak of?&lt;/p&gt;
 </description>
     <pubDate>Thu, 12 Jun 2008 15:56:40 +0000</pubDate>
 <dc:creator>pr0gr4mm3r</dc:creator>
 <guid isPermaLink="false">comment 1230580 at https://www.webmaster-forums.net</guid>
  </item>
  <item>
    <title>I have had the same problems</title>
    <link>https://www.webmaster-forums.net/web-programming-and-application-development/mysql-query-show-order-infinite-or-recursive-page-depth#comment-1230578</link>
    <description> &lt;p&gt;I have had the same problems as you. The solution is on the SQL side of things, and it&#039;s kind of a pain to do (at least the solution I know about). There was an article on sitepoint &lt;a href=&quot;http://www.sitepoint.com/article/hierarchical-data-database/&quot;&gt;about it&lt;/a&gt; and there is a lengthy section on it in my Pro MySQL book. I have never implemented it, but it&#039;s the only way I know about where recursion on the application code side isn&#039;t needed.&lt;/p&gt;
&lt;p&gt;The technique is called &quot;nested set model&quot; and you were using the &quot;adjacent list model&quot; and there&#039;s another technique called &quot;path enumeration model&quot; to traverse hierarchical data - so says my book &lt;img src=&quot;https://www.webmaster-forums.net/misc/smileys/smile.png&quot; title=&quot;Smiling&quot; alt=&quot;Smiling&quot; class=&quot;smiley-content&quot; /&gt;&lt;/p&gt;
 </description>
     <pubDate>Thu, 12 Jun 2008 15:18:00 +0000</pubDate>
 <dc:creator>teammatt3</dc:creator>
 <guid isPermaLink="false">comment 1230578 at https://www.webmaster-forums.net</guid>
  </item>
  </channel>
</rss>
