Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: odczytywanie komentarzy z odpowiedziami
Forum PHP.pl > Forum > PHP
piotr485
Witam, mam taka tabele - komentarze

id|id_odp|nick|tresc|

jesli id_odp == 0 to znaczy ze to pierwszy poziom komentarzy bez odpowiedzi i teraz mam pytanie bo próbuję wyświetlić wszystkie komentarze wraz z odpowiedziami, na razie mam w planie zrobić możliwość odpowiedzi na komentarz do 4 poziomu i więc tak sobie wymyśliłem pętle for

  1.  
  2. for($i=0;$i<=4;$i++) {
  3.  
  4. $tab_query[$i] = mysqli_query($db, 'SELECT * FROM komentarze_imprezy WHERE id_odp = "0"');
  5. while($r[$i] = mysqli_fetch_assoc($tab_query[$i])) {
  6.  
  7. echo komentarz($r[$i]['id'],$r[$i]['nick'],$r[$i]['tresc'],$r[$i]['data'],$r[$i]['godzina'],$i);
  8.  
  9. }
  10.  
  11. }


wiem że muszę tu wcisnąć jeszcze warunek ilości rekordów jeśli są to wtedy wyświetlaj dalej i w ogóle jak skonstruować warunek WHERE, a dokładniej jak później wyciągnąć id_odp w tym przypadku bo już się pogubiłem.

Mógłbym to zrobić ręcznie bez pętli ale wtedy kod by był nie wiadomo jak długi i ograniczenie do ilości poziomów a tutaj przy petli go nie mam.

Chyba, że w ogóle, źle próbuję to rozwiązać - ktoś mnie naprowadzi na właściwą drogę?

IAmBoskiM
komentarze
id (komentarza) | tresc | nick | data

odpNaKom
id (nie jest konieczne) | id_kom (do którego zwykłego komentarza się odnosi; czyli może być parę takich co mają tą samą wartość) | treść | nick | data

  1. <?php
  2. $qry = mysqli_query($db, 'SELECT * FROM komentarze');
  3. while ($kom = mysqli_fetch_assoc($qry)) {
  4. echo komentarz($kom); // dajmy na to że to jakaś funkcja wyświetlająca ZWYKŁY komentarz
  5. $qry2 = mysqli_query($db, "SELECT tresc, nick, data FROM odpNaKom WHERE id_kom = {$kom['id']} ORDER BY data ASC"); // ew. DESC, jak wolisz
  6. while ($odp = mysqli_fetch_assoc($qry2)) {
  7. echo odpNaKom($odp); // funkcja wyświetlająca podkomentarz
  8. }
  9. }
  10. ?>
lukaskolista
To powinno być zrealizowane na jednej tabeli, ponieważ chyba dla każdego poziomu komentarza nie będziesz tworzył nowej tabeli. Poza tym jak na wielu tabelach zrealizujesz wyszukiwanie komentarzy i odpowiedzi na nie po ich treści?
Użyj struktury drzewa. Jeżeli danych nie będzie dużo, to może być nested sets.
IAmBoskiM
Miałem na myśli tylko dwie tabele, komentarze i odpNaKom. Kolumna id_kom odnosi się do kolumny id z komentarze; czyli np. jest komentarz o id 2, i podkomentarz (w odpNaKom) z id_kom 2. Oznacza to, że ten podkomentarz odnosi się do komentarza o id 2.
lukaskolista
Moim zdaniem jest to bez sensu. Komentarze jak i odpowiedzi na nie to identyczne struktury poza tym, że podkomentarze posiadają rodzica. Poza tym ograniczasz w ten sposób dyskusję na dany temat, bo na podkomentarz już się nie da odpowiedzieć.
koodo218
Cytat(lukaskolista @ 24.08.2016, 09:51:30 ) *
Moim zdaniem jest to bez sensu. Komentarze jak i odpowiedzi na nie to identyczne struktury poza tym, że podkomentarze posiadają rodzica. Poza tym ograniczasz w ten sposób dyskusję na dany temat, bo na podkomentarz już się nie da odpowiedzieć.

Zawsze możesz dać id do pod komentarza.
lukaskolista
Cytat(koodo218 @ 24.08.2016, 10:14:02 ) *
Zawsze możesz dać id do pod komentarza.

Zawsze możesz dodać nową tabelę i tak w kółko do 10 poziomu... Nie ogarniam tego.

Podajcie jakiś sensowny argument za tym, żeby odpowiedzi do komentarzy (które z technicznego punktu widzenia są komentarzami do komentarzy) powinny być w innej tabeli.
"Zawsze możesz to i tamto" nie jest żadnym argumentem.
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.