|
|
|||||||||
|
|||||||||
| |||||||||
|
|
|
| |||||||||
![]() |
|
|
«
Previous Thread
|
Next Thread
»
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
#1
|
|||
|
|||
|
"forum-messages" sorting
it may sound a little stupid or easy to be achieved, but it's a major problem to me (maybe i'm stupid).
suppose i want to make a forum. like forums in the world anyone can post new topics, and everybody can reply to them. the replies must be sorted in a tree-like structure visually. for example www.phorum.org has such a structre. everything i could achieve is - i set 3 variables to each message which characterize it - id, thread and parent. id is standart unique id (as you make it in mysql), thread value tells me that certain message belongs to certian message (to sertain main topic, "conversation") - for example i post new topic which takes in mysql id = 1. so every reply to that messgae has a thread = 1. with parent i can see which is the "parent", the "father" of a certain message - for example : i have e topic with id - 1. i have a reply to this topic with id 2, AND thread = 1, AND parent = 1. but i have a third reply with id=3 to message with id=2, so it will has thread 1 - because it belongs to the thread of message with id=1, but will have parent=2, because is a reply to message with id=2. so my question is - how can i sort all the messages in tree-like structure (see the phorum.org link above)? i found a function which sortes 2 dimensional arrays by 1 dimension. it works fine with simple integers : PHP Code:
it works fine when i use only these tree variables - id, thread and parent. but when adding and message specific variables like title, author, and message_body the arrya becomes 4 or 5 or more dimensional and bugs appear. also the existing php function array_merge_recursive can help a little here, but with some pretty tricky loops and after all again bugs appear and the final result is not what i look for. ahy help would be HIGHLY appreciated. also, because i think i can't explain the problem very good ... some questions about the problem is also appreciated - maybe they will help me ... who knows :) 10x in advance Last edited by supudo : April 13th, 2002 at 06:19 AM. |
|
#2
|
|||
|
|||
|
Perhaps I don't understand what you are asking, but what I do in this case is to have an array ($aPosts) of records, each record corresponding to a message. Each record is itself an array:
[id, thread, parent, sibling, title, author, ...] Next, I have an array ($aIndex) which indexes into $aPosts. Thus, $aIndex starts out as [0, 1, 2, ...numberOfPosts-1]. This way, there is no worry about recursive merges, etc. Sorting is also straightforward because I never touch $aPosts, only $aIndex. In particular, even multisorts are easy, because I first sort $aIndex on the least important index, then the next most important one, up to the most important. Csaba |
![]() |
| Viewing: Dev Shed Forums > Programming Languages - More > Software Design > "forum-messages" sorting |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|
|
|