|
|
|||||||||
|
|||||||||
| |||||||||
|
|
|
| |||||||||
![]() |
|
|
«
Previous Thread
|
Next Thread
»
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
Stop making mediocre tutorials.The best tutorials are video! Camtasia Studio makes it easy to create engaging, buzz-building screen videos at any size, in any popular format. Download the free trial!
|
|
#1
|
|||
|
|||
|
Database structure for a forum
hi guys. i want to make a database for a webforum using mySQL and php. im not totally new to databases and i think i have the structure pretty much figured out except for one thing:
i want to make a response to a post indented. this is nothing new and i haev seen it done before. if you do not understand what i mean then here is an example. imagine a topic. now you have 3 replies to this topic. TOPIC - - -reply 1 - - -reply 2 - - -reply 3 now someone replies to "reply 1" so its gonna look like this: TOPIC - - -reply 1 - - - - - -reply 1a - - -reply2 - - -reply3 like i said, im sure you guys have seen this ebfore. this is where i am stuck. i cameup with a solution involving php, but i am not sure if it is optimal. i imagined a topic table and a reply with a column for repliedToID, a type[i/] field. The type field is either "topic" or "reply" and it tells you if the value in the [i]repliedToID column is an id for a topic or another reply. so basically you know if this is a reply to a topic, or to another reply. so here is the basic algorithm: to display a topic and all its replies... select from the reply table where type=topic and repliedToID is the topicID you are searching for. so now you have all the replies to this topic. then for each reply find out how many replies this reply has. if 0 then go to the next reply, else get all teh replies to this reply. as you can see id just have to write a recursive function in php which is no problem...but im wondering if there is an easier way. perhaps to set up the structure so that i could just get what i need without recursion. help if you can. thanks |
|
#2
|
||||
|
||||
|
the most popular way to do it without recursion is joe celko's nested set model
do a google search for "celko nested sets" here's another method, which the author calls "modified preorder tree traversal" -- http://www.sitepoint.com/article/1105 rudy |
![]() |
| Viewing: Dev Shed Forums > Databases > Database Management > Database structure for a forum |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|
|
|
|