| ID 1 - 01.02.2025
..| ID 7 - 07.02.2025
| ID 2 - 02.02.2025
..| ID 3 - 03.02.2025
..| ID 5 - 05.02.2025
| ID 4 - 04.02.2025
Oraz drugi przypadek - możliwośc odpowiadania do każdego postu. Widzimy wiele poziomów postów, tutaj akurat 3. Czyli jest odpowiedź do odpowiedzi, np posty ID 9 i 11 są odpowiedziami do postu ID 8 a ten jest odpowiedzią do postu ID 7 podobnie jak 10 i 12 są odpowiedziami do 7, który to jest odpowiedzią do pierwszego postu o ID 1.
| ID 1 - 01.02.2025
..| ID 7 - 07.02.2025
....| ID 8 - 08.02.2025
......| ID 9 - 09.02.2025
......| ID 11 - 11.02.2025
........| ID 13 - 13.02.2025
....| ID 10 - 10.02.2025
....| ID 12 - 12.02.2025
| ID 2 - 02.02.2025
..| ID 3 - 03.02.2025
..| ID 5 - 05.02.2025
| ID 4 - 04.02.2025
Myślę, że w obu przykadach baza powinna wyglądać mniej więcej tak:
ID | Data | treść | odpowiedź_do
Dla drugiego przypadku (odpowiedzi do odpowiedzi) wyglądało by to tak:
ID | Data | treść | odpowiedź_do
1 | 01.02 | blabla | 0
2 | 02.02 | blabl2 | 0
3 | 03.02 | blabla | 2
4 | 04.02 | blabl4 | 0
5 | 05.02 | blabl5 | 2
7 | 07.02 | blabla | 1
8 | 08.02 | blabl8 | 7
9 | 08.02 | blabla | 8
10| 10.02 | blabla | 7
11| 10.02 | blabla | 8
12| 01.02 | blabla | 7
13| 13.03 | blabla | 11
O ile dodawanie tego do bazy to pikuś to mam problem z wymyśleniem jak to wyświetlać, tak aby została zachowana kolejność post-odpowiedź_1-...-odpowiedź_n oraz data. No i wcięcia - tj post niższego poziomu, czyli odpowiedź żeby była wcięta (większy margin left) względem posta nadrzędnego.
Jak to zrobić? Naprowadźcie mnie pls. Pętla w pętli była by rozwiązaniem tylko w przypadku pierwszym gdy wiemy że są tylko dwa rodzaje postów - główne i odpowiedzi. Ale w przypadku drugim może być odpowiedź do odpowiedzi, do odpowiedzi, do odpowiedzi i tak właściwie 100 razy. Czyli odpada pętla w pętli, w pętlei, w pętli...
PS. Jeszcze nie ma żadnego kodu na papierze. Na razie wszystko dzieje się w mojej głowie

EDIT: hmmm, chyba wymyśliłem.
$sql = "SELECT id, data, odpowiedz FROM test_posty"; $result = $conn->query($sql); while($row = $result->fetch_assoc()){ $sql2 = "SELECT id, data,odpowiedz FROM test_posty WHERE odpowiedz = $row[id] ORDER BY id ASC"; $result2 = $conn->query($sql2); while($row2 = $result2->fetch_assoc()){ if($row2['odpowiedz'] == $row['id']){ } } }
To wyświetla posty... właściwie tylko traktuje każdą odpowiedź jako odpowiedź do 1 poziomu oraz powtarza wyświetlanie odpowiedzi jako post najwyższego poziomu. Czyli w skrócie - nie działa jak należy


Nie wiem, może dodać w wewnętrznej pętli tablicę do której będę zapisywał ID wyświetlonego posta a następnie w pętli nadrzędnej sprawdzać czy Id jest w tablicy i jeśli tak to już tego rekordu nie wyświetlać?