<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Mark Armendariz wrote:
<blockquote cite="mid46C5DBF4.2080901@enobrev.com" type="cite">
  <meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
csnyder wrote:
  <blockquote
 cite="mid:b76252690708171007n2915afa2m9f19ad90771760b1@mail.gmail.com"
 type="cite">
    <pre wrap="">On 8/16/07, Dan Cech <a class="moz-txt-link-rfc2396E"
 href="mailto:dcech@phpwerx.net">&lt;dcech@phpwerx.net&gt;</a> wrote:
  </pre>
    <blockquote type="cite">
      <pre wrap="">If you're looking for ideas, here is a proof-of-concept I put together
back in 2004 for a system using a modified preorder traversal tree for
threaded messages.

<a class="moz-txt-link-freetext" href="http://clew.phpwerx.net/">http://clew.phpwerx.net/</a></pre>
    </blockquote>
    <pre wrap=""><!---->he nice thing about using some sort of tree (we called it a
nested-set model) for messages is that you get true threading--this is
a reply to that--rather than just a flat chronological list of
replies.

Very often, people just want the flat list as it is easier to follow.
  </pre>
  </blockquote>
Nested-set grows rather hairy in no time, especially with data that
needs to be changed often.  After some reading (thanks to Elliotte's
compass - thank you sir), it seems to me XML could definitely prove a
better means of tracking hierarchal information, which especially
includes threaded conversation.  It seems to me that flattening tree
data is far easier than branching flat data (and meta fields in my rel
db makes me queasy).<br>
</blockquote>
<br>
What is generally called "adjacent pair" is easiest, thats the 
record_id, record_id_parent scenario you see in many places.<br>
<br>
The bit of SQL you need to make it child's play is the "WITH RECURSE"
feature, which is sadly not widely supported:<br>
<br>
SELECT record_id, text_of_message<br>
   FROM messages  chd<br>
   JOIN messages par  ON chd.record_id_par = par.record_id WITH RECURSE<br>
  WHERE chd.record_id = $x<br>
<br>
This construct does the Right Thing.  But as I said, it is almost
completely unsupported.  It is a true black eye IMHO that nearly all
big dbms vendors have ignored this incredibly useful extension.<br>
<br>
Also, don't confuse the nature of the data with its presentation.  In
terms of structure, all messaging systems are storing the same
structure, be it emails, blogs with responses, usenet, or message
boards.  All of them are storing a root message with replies and
replies-to-replies and so forth.  It is a //hierarchy of like items//. 
<br>
<br>
It terms of presentation you can go treeview, flattened (i think phpbb
does that), or indented (like some blogging systems), but the matter of
presentation can even be made a user option and its child's play to
support any presentation if the data is structured well to begin with.<br>
<br>
The best way to decide between files (as in XML, JSON, or YAML or
plaintext) and table-based dbms is overhead.  How much down payment do
you have to make to get the result?  <br>
<br>
<blockquote cite="mid46C5DBF4.2080901@enobrev.com" type="cite"><br>
Mark<br>
  <pre wrap="">
<hr size="4" width="90%">
_______________________________________________
New York PHP Community Talk Mailing List
<a class="moz-txt-link-freetext" href="http://lists.nyphp.org/mailman/listinfo/talk">http://lists.nyphp.org/mailman/listinfo/talk</a>

NYPHPCon 2006 Presentations Online
<a class="moz-txt-link-freetext" href="http://www.nyphpcon.com">http://www.nyphpcon.com</a>

Show Your Participation in New York PHP
<a class="moz-txt-link-freetext" href="http://www.nyphp.org/show_participation.php">http://www.nyphp.org/show_participation.php</a></pre>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="72">-- 
Kenneth Downs
Secure Data Software, Inc.
<a class="moz-txt-link-abbreviated" href="http://www.secdat.com">www.secdat.com</a>    <a class="moz-txt-link-abbreviated" href="http://www.andromeda-project.org">www.andromeda-project.org</a>
631-689-7200   Fax: 631-689-0527
cell: 631-379-0010
</pre>
</body>
</html>