Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Komentarze z odpowiedziami
Forum PHP.pl > Forum > Bazy danych
conmar
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.
quality
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 smile.gif

Adrian
erix
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. winksmiley.jpg
quality
Hmmm ja widze tutaj tylko dwa zapytania smile.gif

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 )
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.