Forum forum zespołu muzyki folk Portfolk Strona Główna forum zespołu muzyki folk Portfolk
Zapraszamy do dyskusji... TO SCOTLAND!!!
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy     GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Multi Threaded Comments PHP

 
Napisz nowy temat   Odpowiedz do tematu    Forum forum zespołu muzyki folk Portfolk Strona Główna -> Doradź nam coś.
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
cheapbag214s
Kapitan jachtowy


Dołączył: 27 Cze 2013
Posty: 20086
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: England

PostWysłany: Pon 2:40, 02 Wrz 2013    Temat postu: Multi Threaded Comments PHP

Multi Threaded Comments PHP,[link widoczny dla zalogowanych]
I have a script I wrote I while back for comments,[link widoczny dla zalogowanych], but it is only single threaded. I would like it to be multi-threaded,[link widoczny dla zalogowanych], but only as so a user can reply to a comment,[link widoczny dla zalogowanych], not so a user can reply to a comment of a comment. So the threads would only be two deep.
Currently I store a comment_id against a user_id in my database,[link widoczny dla zalogowanych].
The only way I can think of to do the multi threaded comments,[link widoczny dla zalogowanych], is to have a parent field in the comments table. But if I do this then when I am selecting the comments with PHP,[link widoczny dla zalogowanych], I will have to do another SELECT command to select the comments children (if any) for each comment. Seems like a lot of work on the database.
There has to be a better way,[link widoczny dla zalogowanych]. Any ideas on this,[link widoczny dla zalogowanych]? Or tutorials?
A recursive query to select all comments based on their parent ids,[link widoczny dla zalogowanych]. This is supported by many database products and the syntax depends on the database type,[link widoczny dla zalogowanych]. Check the docs for more info (search for 'recursive'),[link widoczny dla zalogowanych].
If you store the article id in each (sub-)comment,[link widoczny dla zalogowanych], you can just select all comments with the article id in one regular select query. You can use the parent ids to properly display the comments on the page under the right parent comment:
SELECT * FROM comments WHERE article_id = :article_id
If you only need two levels of comments, you can use an extended where to include both first level and second level comments:
SELECT * FROM comments
WHERE parent_id = :article_id
OR parent_id IN (SELECT id FROM comments WHERE parent_id = :article_id)
It is also possible to use union all to combine two queries that have the same columns,[link widoczny dla zalogowanych], but since I assume that all data are from the same table,[link widoczny dla zalogowanych], there is probably no need for it (see the extended where-clause above):
SELECT * FROM comments WHERE parent_id = :article_id
UNION ALL
SELECT * FROM comments WHERE parent_id IN
(SELECT id FROM comments WHERE parent_id = :article_id)
Personally,[link widoczny dla zalogowanych], I would go for option 2 because it is simple (no exotic SQL construct required), efficient (1 query) and flexible (supports as many levels of comments as you like).
This is a common use for hierarchical,[link widoczny dla zalogowanych], or tree-structure data. I wrote a popular answer to this Stack Overflow question: What is the most efficient/elegant way to parse a flat table into a tree?
I also wrote a presentation describing alternatives for tree-structured data: Models for Hierarchical Data with SQL and PHP,[link widoczny dla zalogowanych].
Another solution that is not included in my presentation is the way Slashdot does threaded comments. They use a parent column like you do,[link widoczny dla zalogowanych], so each comment references the comment it replies to. But then they also include a root column so each comment knows the post it belongs to. There are seldom more than a few hundred comments on a given post,[link widoczny dla zalogowanych], and usually you want to get the whole tree of comments for a given post starting at the top of the comment thread:
相关的主题文章:


[link widoczny dla zalogowanych]

[link widoczny dla zalogowanych]

[link widoczny dla zalogowanych]

[link widoczny dla zalogowanych]

[link widoczny dla zalogowanych]

[link widoczny dla zalogowanych]

[link widoczny dla zalogowanych]

[link widoczny dla zalogowanych]

[link widoczny dla zalogowanych]

[link widoczny dla zalogowanych]

[link widoczny dla zalogowanych]

[link widoczny dla zalogowanych]

[link widoczny dla zalogowanych]

[link widoczny dla zalogowanych]

[link widoczny dla zalogowanych]


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum forum zespołu muzyki folk Portfolk Strona Główna -> Doradź nam coś. Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

Skocz do:  

Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001 phpBB Group

Chronicles phpBB2 theme by Jakob Persson (http://www.eddingschronicles.com). Stone textures by Patty Herford.
Regulamin