![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 26 Pomógł: 2 Dołączył: 29.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Potrzebuje zrobić system komentarzy do bloga. Tabele wyglądają mniej więcej tak: 1.blog_posts id|user_id|title|content|created 2.blog_post_comments id|blog_post_id|user_id|content|created Problem polega na tym, że musi być możliwość odpowiadania na komentarze (wystarczy, że będzie do jednego poziomu w głąb czyli komentarz i odpowiedzi). Pierwsze co mi przyszło do głowy to dołożyć pole parent_id do tabeli blog_post_comments i ustawiania go na 0 dla komentarzy ktore nie maja podkomentarzy ale przy takim rozwiazaniu nie mogę tak skonstruować zapytania aby wyciągnąć te komentarze w odpowiedniej kolejności. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 9 Dołączył: 13.02.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Najlepiej zrob dwa zapytania do pobierania komentarzy.
Najpierw pobierasz wszystkie glowne, pozniej zbierasz ich id w ciag liczb i robisz drugie pobierajace odpowiedzi " select ... where id_parent IN (1,2,3 ... )". Pozniej zostaje ci tylko wyswietlenie ich w widoku. Wtedy mozesz sobie pod kazdym glownym komentarze wyswietlic odpowiedzi, a i glowne i odpowiedzi bedziesz mogl sortowac po dacie w dwoch zapytaniach ![]() Adrian Ten post edytował quality 30.04.2010, 10:07:56 -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Najgorsze możliwe wyjście, bo generuje tyle zapytań, ile jest odpowiedzi.
Ja bym zrobił w ten sposób - do tabeli z komentarzami dodać kolumnę w stylu ORDER będąca wyznacznikiem kolejności w komentarzach i pole opisujące stopień zagłębienia. Temat bardzo podobny do drzewek, właściwie to identyczny, tylko są dodatkowe pola na zawartość komentarzy. ![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 9 Dołączył: 13.02.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Hmmm ja widze tutaj tylko dwa zapytania
![]() Czytaj ze zrozumieniem. Pierwsze pobiera glowne komentarze. Drugie zapytanie pobiera wszystkie podrzedne za pomoca IN (..). Proste i optymalne. Order jest wlasnie nie optymalne, bo przy dodawaniu komentarza bedzie potrzeba przebudowania calego drzewa. Nie optymalne i problematyczne ( trzeba by bylo stosowac transakcje aby zapobiec przypadkowej utracie danych ) Ten post edytował quality 6.05.2010, 09:08:56 -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 07:30 |