![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
No nie działa. Mam tabelę z listą użytkowników, w niej między innymi "login", "email" parę innych oraz "regdt" typu DATETIME - data i czas rejestracji.
Mam taką funkcję: CODE function WUserGetList($orderby="regdt",$orderDirection="DESC"){ $arRet=array(); //jedziemy przez wszystkich zarej. userów $result=mysql_query("SELECT * FROM users ORDER BY $orderby $orderDirection") or die(mysql_error()); //dalej wypełniam array do zwrócenia, ale to nie ma znaczenia - w $result nic nie ma w pewnych okolicznościach o czym poniżej }; Działa tylko gdy zapodam inne pole w $orderby (np. "email"), lub gdy zapodam "regdt" ale z "ASC" w $orderDirection. Tak więc to działa ok: WUserGetList("regdt","ASC"); podobnie jak i to działa ok: WUserGetList("email","DESC"); Natomiast gdy zapodam "regdt" i "DESC", nie działa - nie wyrzuca żadnego błędu, ale też i nic nie zwraca ($result ma zerową wielkość). Tak więc to nie działa: WUserGetList("regdt","DESC"); Czy istnieje jakiś znany problem z sortowaniem wg. DATETIME ? A może jakiś inny błąd popełniam? |
|
|
-Wieviór- |
![]()
Post
#2
|
Goście ![]() |
Tak tylko dla estetyki:
Zobacz zresztą, może to coś poprawi. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, ale nie, nie rozwiązało problemu. Masz jakieś inne koncepcje?
p.s. To też próbowałem i też nie pomogło: CODE $result=mysql_query("SELECT * FROM users ORDER BY '$orderby' '$orderDirection'") or die(mysql_error()); Ogółem wychodzi wszystko poza jednym: sortowanie malejące wg. regdt (DATETIME), może to jakiś bug w mysql'u ? hmm, to jest coraz dziwniejsze. W owej tabeli mam jeszcze jedno pole typu DATETIME ("dtLastNotify") - i przy użyciu tego pola wszystko działa ok. w obu kierunkach ("DESC" i "ASC"). |
|
|
-Wieviór- |
![]()
Post
#4
|
Goście ![]() |
Zmień nazwę pola regdt w tabeli i w zapytaniu i zobacz ;]
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Zmieniłem - bez rezultatu.
Natomiast, znudzony już, parę razy nacisnąłem F5 by odświeżyć i... raz wyszło - następnym razem już nie. Zgłosiłbym to do mojego providera gdyby nie to że phpMyAdmin działa OK (również gdy sortowanie wg. problematycznego pola), podobnie działają OK wszystkie inne skrypty na mojej stronie (w tym np. pphpbb czy wikimedia). No po prostu moje jak zwykle nie działa ![]() Może jak jutro na to spojrzę to znajdę jakiś błąd. A może jest jakiś sposób by mysql'owi powiedzieć, że ma być bardziej wrażliwy na błędy/bardziej spostrzegawczy i bardziej wymowny w swoich problemach? Ten post edytował konrados 8.02.2008, 21:08:13 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
możliwy jest jeszcze jeden powód - jeżeli danych w bazie jest b. dużo, a na polu regdt nie ma założonego indeksu, to zapytanie może wykonywać się zbyt długo i dlatego (przy krótkich limitach czasu dla serwera) nic nie zwraca....
-------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie, to też nie - jedyni zarejestrowani użytkownicy to ja:) I jest mnie co najwyżej sześciu. To skrypt testowy jest.
Na razie po prostu przestałem sortować wg. daty/czasu w trybie DESC. Myślę, że jednak to jest błąd mysql'a - zamiast zapodać mi jakiś błąd on po prostu nic nie robi. Być może w jednym z rekordów coś mu się nie podoba i strajkuje. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 23:31 |