[SQL][PHP] sortowanie wyświetlania |
[SQL][PHP] sortowanie wyświetlania |
16.05.2022, 12:29:33
Post
#1
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 4.05.2019 Skąd: PHP5.6 Ostrzeżenie: (0%) |
Mam problem z wyświetleniem sub-komentarzy pod określonym komentarzem.
Ogółem, zależy mi aby komentarze i subkomentarze trzymać w jednej tabeli. Sub-komentarz jest rozpoznawany za pomocą id komentarza, tzn. jeśli `id_subkom`>0 == to jest to subkomentarz, a numer odpowiada `id` komentarza pod którym został napisany. Komentarz zawsze zawiera `id_subkom`=0. Mam taką tabele:
A tak wyświetlam komentarze:
Teraz tu pojawia się pytanie jak połączyć subkomentarze, aby wyświetlały się pod danym komentarzem? Chyba w warunku:else muszę zastosować kolejną pętle while(), mam rację? bo nie jestem pewny, a próby są dalekie od prawidłowego rezultatu... |
|
|
16.05.2022, 12:37:09
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Użyj biblioteki PDO.
Jednym zapytaniem pobierasz komentarze "główne". Drugim zapytanie subkomentarze (tu w trybie PDO::FETCH_GROUP), co utworzy tablicę z indeksem o wartości kolumny id_subkom (tą kolumnę należy ustawić jako pierwszą w zapytaniu), pod którym będą wszystkie subkomentarze dla danego id. Faktycznie będą dwie pętle (while czy też for). W drugiej mając id głównego komentarza, należy iterować tylko po indeksie o tej wartości z głównej tablicy. Wyświetl wynik drugiego zapytania poprzez print_r, to stanie się jasne co i jak. Oczywiście zakładamy dwupoziomowe zagłębienie. -------------------- |
|
|
16.05.2022, 12:59:02
Post
#3
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 4.05.2019 Skąd: PHP5.6 Ostrzeżenie: (0%) |
Dzięki za odpowiedź. Zanim ogarnę PDO do takiego stopnia takiej znajomości minie co najmniej doba i trochę niekomfortowo byłoby mieć w kodzie fragment PDO gdzie całość jest pisana strukturalnie.
Właśnie mam problem z tą drugą pętlą, obstawiam że struktura i ogólne założenie jest nie prawidłowe, wyświetla mi subkomentarz, ale dubluje wyniki i w złym miejscu, a próbuję tak:
|
|
|
16.05.2022, 14:32:56
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
1. Wydaje mi się, że dal subkomentarzy, id_wyz nie jest kompletnie potrzebne, bo ta wartość jest determinowana przez komentarz nadrzędny dla subkomentarza.
2. Tu:
chyba powinno być:
3. Tu:
nadużywasz tą samą zmienną. -------------------- |
|
|
16.05.2022, 17:31:18
Post
#5
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 4.05.2019 Skąd: PHP5.6 Ostrzeżenie: (0%) |
1. Też się nad tym zastanawiałem, ale ostatecznie (bez testów) doszedłem do wniosku, że jeżeli wywalę id_wyz, to wyświetli mi id_subkom dla innego id_wyz w bazie - jest taka możliwość.
2. Zmieniłem na `id_subkom`='".$rowkom['id']." - w ten sposób wyświetla mi komentarz pod którym powinny znaleźć się subkomentarze i co dziwne sypie mi błędem, którego nie ogarniam...
3. Taaak, zazwyczaj nadpisuje zmienne, ale tutaj żeby się nie pogubić zmieniłem. Jak narazie myślę aby zmienić sposób, bo ten chyba nie jest rozsądnie przemyślany. Myślałem, że zejdzie mi to w kilka minut, a tu nauka mnie czeka.. haha edit: tak to wygląda: edit @trueblue: źle zrozumiałem Twój przekaz. Poprawione, błędu już nie ma. Ten post edytował phpuser88 16.05.2022, 17:45:48 |
|
|
16.05.2022, 17:36:04
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Sypie błędem właśnie z powodu nadpisywania zmiennej, o której pisałem w punkcie 3.
Porównaj while z while'em dla zapytania dotyczącego głównych komentarzy. Zresztą błąd wyraźnie mówi gdzie leży problem. -------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 04:12 |