![]() |
![]() ![]() |
![]() |
![]()
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... |
|
|
![]()
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ć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .
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). |
|
|
![]()
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ć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . 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 (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) forum_post 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 |
|
|
![]()
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%) ![]() ![]() |
|
|
|
![]()
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%) ![]() ![]() |
|
|
|
![]()
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) mogli przetestować Twój kod - wrzuć na forum zapytanie tworzące te dwie tabele, oraz zapytania wstawiające przykładowe dane. 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... |
|
|
![]()
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) mogli przetestować Twój kod - wrzuć na forum zapytanie tworzące te dwie tabele, oraz zapytania wstawiające przykładowe dane. 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%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.09.2025 - 16:02 |