![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 1 Dołączył: 7.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dlaczego przy takim kodzie gdy wywołuje w adresie sortowanie sortuje całą tabelę ze wszystkimi w niej wpisami, a nie tylko to co wczytało? Wpisów w niej jest prawie czterysta. Kiedy sortuje do malejąco, to jako pierwsza pozycja wskakuje ostatni z tych prawie czterystu, a nie ostatni z wczytanych pięciu. Jak to zrobić? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Ponieważ tak działa SQL - najpierw występuje sortowanie (ORDER BY), potem dopiero ograniczenie zbioru wyników (LIMIT). I jest to jedyne sensowne rozwiązanie, bo o ile jawnie nie określisz sortowania rekordów, dane zwracane są w kolejności losowej*. To skutkuje tym, że dokładnie to samo zapytanie (bez sortowania) może zwrócić zupełne różne wyniki za każdym razem.
1. Upewnij się jedynie, że masz indeks założony na kolumny data_zgloszenia i godzina_zgloszenia (notabene, to powinna być raczej jedna kolumna) i zostaw zapytanie tak jak je masz. 2. To o co pytasz mógłbyś wymusić podzapytaniem:
3. Podaj więcej szczegółów, jeżeli powyższe dwa są nieodpowiednie. * tak na dobrą sprawę trzeba przyjąć - różne bazy przy różnych zapytaniach przy różnej ilości danych będą zachowywać się inaczej. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 1 Dołączył: 7.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
1. Upewnij się jedynie, że masz indeks założony na kolumny data_zgloszenia i godzina_zgloszenia (notabene, to powinna być raczej jedna kolumna) i zostaw zapytanie tak jak je masz. Nie wiem czy miałem :) Wiem, że w phpMyAdmin obu kolumnom w zakładce Struktura "dodałem indeks" z menu rozwijanego "więcej" (na końcu tej tabeli przy każdym wersie jest taka opcja) 2. To o co pytasz mógłbyś wymusić podzapytaniem:
To zapytanie zwraca na stronie pusty wynik. 3. Podaj więcej szczegółów, jeżeli powyższe dwa są nieodpowiednie. Niestety nie wiem co mógłbym jeszcze podać. Wydaje mi się, że wszystko co niezbędne jest we wklejonym przeze mnie kodzie PHP. Reszta kodu, myślę, w żaden sposób nie łączy się z tym co ma wczytać zapytanie. Może jakaś wskazówka? Naprawdę nikt nie jest w stanie mi pomóc? Nie wierzę, że możliwości PHP i MySQL mogą być ograniczone w tak wydawałoby się nieskomplikowanej sprawie. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat To zapytanie zwraca na stronie pusty wynik. Zapewne wyrzuca jakiś błąd, ale Ty wszystkie błędy sobie ukrywasz... pozbądź się "@" oraz funkcji mysql_* na rzecz PDO, albo chociaż korzystaj z mysql_error.Jak już napisałem: sortowanie (ORDER BY) występuje przed wycięciem (OFFSET ... LIMIT ...) rekordów. Jeżeli chcesz wymusić odwrotne działanie musisz skorzystać z zapytania, które podałem w pkt. 2. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 340 Pomógł: 46 Dołączył: 31.07.2009 Skąd: A Ostrzeżenie: (0%) ![]() ![]() |
czy nie prościej było by użyć: http://datatables.net/
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 6.07.2025 - 09:51 |