Dan McCullough wrote:
I've come into this discussion pretty late so please bear with me if I go over something that has been ruled out. You are trying to print out in a threaded method the first post in a thread followed by each post after that, that is a child/reply to that post. Is that correct? So something like Example 1 Thread1 Post1 Post2 Post3 Post4 ..... or Example 2 Thread1 Post1 Post2 - reply to post 1 Post3 - reply to post 2 Post4 - reply to post 1 Post5 - reply to post 1 Post6 - reply to post 2 Post7 - reply to post 3
Not a valid example, because there is no guaruntee that the posts are in order. In your example, the order could easily be:
Thread 1 Post 1 Post 6 Post 7 Post 2 Post 3 Post 4 Post 5 Since somebody can reply to any leaf in the tree at any time.
Example 1 is very common and is the easiest to implement. From what I remember you would need a couple of DB tables for post, post_thread, post_post, thread So for your question thread isnt very relative but I thought I would throw it in. thread { threadid int(11) auto_increment, threadname threadsort ... thread_post { threadid int(11) postid int(11) ....
Tables that serve only to tie two other tables together are a waste. I suggest you look up your normal forms again. But to sum up the reasoning, there is no point to have thread_post because you can simply have a "threadid" field in the "post" table, because it's a one-to-many relationship. A post can't belong to more than one thread.
post { postid int(11) auto_increment, postname posttext ... post_post postid int(11), postid2 int(11) ....
Same thing, I think. A post can't have more than one parent, so you might as well put the parent id into the post table. Unless you have one "post_post" row for every parent that a post has. This spams the database like nobody's business, but makes queries easier.
Please note I have two kids fighting over the cat, trying to cook dinner and stave off a flood of water from the rising river so the SQL structure is for example. You can get everything in one query from the DB and lay it out based on the id of the post, if you DB is properly indexed and setup and queries are optimized you'll hardly notice a blip when the load gets up. You do not want to be doing multiple queries on a page when one well written query will do the trick.
I'm not seeing it. Unless you have a many to many relationship on post_post, you're going to need multiple queries. Unless I'm missing some SQL syntax that allows references to previously found rows. It's been a long while since I did advanced SQL queries.
I think your example relies on getting everything in one query by getting all posts with the same threadid, and then sorting by ID, but the problem is that we don't want to sort posts by ID, since a higher ID might could easily go before a post with a lower ID based on where people replied.
Regards, Adam. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php