![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 237 Pomógł: 1 Dołączył: 15.10.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Mam pewien kłopot z posortowaniem. Otóż mam tabele forum_topic i forum_post i chce posortowac wszystkie tematy malejąco po ostatnim dodanym poscie w danym temacie.
Fragment kodu:
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 675 Pomógł: 15 Dołączył: 7.11.2004 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
@henio na czym dokładnie polega problem? Nie sortuje? Źle sortuje?
Nie rozumiem Twojej konstrukcji: @$_GET['id_forum_dzial']. Na Twoim miejscu sprawdzałbym (isset" title="Zobacz w manualu PHP" target="_manual, empty" title="Zobacz w manualu PHP" target="_manual) czy zmienna istnieje i czy ma poprawny typ, a nie stosował owej sztuczki... -------------------- Kto pyta, nie błądzi...
Kto zbłądził, ten pyta... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 237 Pomógł: 1 Dołączył: 15.10.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Chodzi mi o to, że chciałbym aby tematy były poukładane malejąco po dacie ostatniego posta w temacie. Obecnie zaś data ostatniego postu nie wpływa na kolejność tematów.
|
|
|
![]()
Post
#4
|
|
![]() Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 675 Pomógł: 15 Dołączył: 7.11.2004 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Masz sporo zapytań - trudno zgadnąć, które chcesz zmodyfikować
![]() Podejrzewam, że musisz: - dokonać złączenia, - zastosować ORDER BY. Napisz dokładnie, które zapytanie odpowiada Twojemu problemowi, oraz napisz, jaka jest struktura Twych tabel (forum_topic i forum_post). -------------------- Kto pyta, nie błądzi...
Kto zbłądził, ten pyta... |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 237 Pomógł: 1 Dołączył: 15.10.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Wiem jak się sortuje. Przeczytaj moje posty wyżej
Masz sporo zapytań - trudno zgadnąć, które chcesz zmodyfikować ![]() Podejrzewam, że musisz: - dokonać złączenia, - zastosować ORDER BY. Napisz dokładnie, które zapytanie odpowiada Twojemu problemowi, oraz napisz, jaka jest struktura Twych tabel (forum_topic i forum_post). Dobrze: Skruktura tabeli: a) forum_topic id_forum_topic - INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT tytul - VARCHAR(25) NOT NULL podtytul - VARCHAR(65) DEFAULT NULL id_forum_user - INTEGER NOT NULL id_forum_dzial - INTEGER NOT NULL id_forum_watek - INTEGER NOT NULL data_powstania - VARCHAR(18) NOT NULL ![]() id_forum_post - INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT tytul - VARCHAR(25) tresc - TEXT id_forum_user - INTEGER NOT NULL id_forum_dzial - INTEGER NOT NULL id_forum_watek - INTEGER NOT NULL id_forum_topic - INTEGER NOT NULL data_powstania - VARCHAR(18) NOT NULL Właśnie prawdopodobnie należałoby użyć łączenia tabel.
To zapytanie pobiera tematy i mogę je posortować po dacie powstanie topica. A to:
Ostatni post wybiera |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 675 Pomógł: 15 Dołączył: 7.11.2004 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Powinno działać:
Problemy: - data_powstania - nie powinna być polem VARCHAR. MySQL obsługuje odpowiednie formaty dat: Date and Time Types. - aby zapytanie działało sybciej, lepiej jest wypisać kolumny (nawet jeśli trzeba wypisać wszystkie), niż stosować znak "*". -- EDIT (do posta poniżej) Tak t. = forum_topic co wynika z aliasu forum_topic AS t -------------------- Kto pyta, nie błądzi...
Kto zbłądził, ten pyta... |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 237 Pomógł: 1 Dołączył: 15.10.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Powinno działać:
Problemy: - data_powstania - nie powinna być polem VARCHAR. MySQL obsługuje odpowiednie formaty dat: Date and Time Types. - aby zapytanie działało sybciej, lepiej jest wypisać kolumny (nawet jeśli trzeba wypisać wszystkie), niż stosować znak "*". Czy t. = forum_topic?
Wyświetla mi: zapytanie: SELECT t.id_forum_topic, t.tytul, max(p.data_powstania) FROM forum_topic AS t JOIN forum_post AS p ON (p.id_forum_topic = t.id_forum_topic) GROUP BY p.id_forum_post WHERE t.id_forum_dzial = '1' AND t.id_forum_watek='1' ORDER BY max(p.data_powstania) DESC---blad:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE t.id_forum_dzial = '1' AND t.id_forum_watek='1' ORDER BY max(p.dat' at line 5 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 675 Pomógł: 15 Dołączył: 7.11.2004 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
-------------------- Kto pyta, nie błądzi...
Kto zbłądził, ten pyta... |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 237 Pomógł: 1 Dołączył: 15.10.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
To już poprawiłem. Tylko że obecnie wyświetla mi te tematy tyle razy ile jest postów.
Np: => Koszulki 3 Henio Dzisiaj o 14:57 Heniek => Koszulki 3 Henio Dzisiaj o 14:57 Heniek fragment kodu:
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 675 Pomógł: 15 Dołączył: 7.11.2004 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Tylko że obecnie wyświetla mi te tematy tyle razy ile jest postów. Klauzula GROUP BY powinna temu przeciwdziałać.Możesz dać zapytania tworzące obie tabele, oraz przykładowe wstawiające dane? Wtedy łatwiej będzie znaleźć problem. -------------------- Kto pyta, nie błądzi...
Kto zbłądził, ten pyta... |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 237 Pomógł: 1 Dołączył: 15.10.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Co masz na myśli? Mam jeszcze raz stworzyć te tabele? Mam wstawić przykładowe dane do tych tabel?
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 675 Pomógł: 15 Dołączył: 7.11.2004 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Co masz na myśli? Aby forumowicze (w tym i ja ![]() Jak wspomniałem - według mnie, wszystko powinno działać, na moich danych działało, ale może w tabelach masz jeszcze coś, czego ja nie uwzględniłem... -------------------- Kto pyta, nie błądzi...
Kto zbłądził, ten pyta... |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 237 Pomógł: 1 Dołączył: 15.10.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Aby forumowicze (w tym i ja ![]() Jak wspomniałem - według mnie, wszystko powinno działać, na moich danych działało, ale może w tabelach masz jeszcze coś, czego ja nie uwzględniłem... Ok.
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 675 Pomógł: 15 Dołączył: 7.11.2004 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
-------------------- Kto pyta, nie błądzi...
Kto zbłądził, ten pyta... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 11:26 |