![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 300 Pomógł: 1 Dołączył: 22.09.2003 Skąd: Czeladź Ostrzeżenie: (0%) ![]() ![]() |
witam:)
pamiętam coś że ten problem już był poruszany na forum, ale tera szukam i szukam i jakoś nie mogę znaleźć:( otóż jak zmusić mysqla żeby sortował wyniki zapytania wg. polsich znaków. (np. *.order by tekst posortuje mi wg. kolumny tekst, ale to co się zaczyna od polskiego znaku daje na koniec). czy da się coś takiego osiągnąć nie zmieniając konfiguracji mysqla? czy da się to zrobić tylko z poziomu php? mam mysqla odpalonego na windowsie 2000, ale sortowanie powinno działać wszędzie:). z góry dziękiuję za odpowiedź pozdrawiam tsharek Ten post edytował tsharek 30.09.2004, 11:51:41 -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 27.08.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat my.ini - ustawienia mysql'a default-charset =Latin2 Powinno IMHO wystarczyć Do czego wystarczyc? Przecież ORDER BY (wykonywane w bazie) nie ma nic wspólnego z tym , jakie kodowanie ustawisz w pliku php.ini. Aby ORDER BY uwzględniał polskie znaki, trzeba mysql'a odpalić z opcją 'default-collation = latin2'. Wtedy będzie sortował 'po polsku'. Ale to nie wszystko. Niektóre indeksy moga już być posortowane domyślną metodą, czyli bez uwzględnienia polskich znaków. Wtedy musisz dla każdej tabeli wykonać komendę: myisamchk -r -q --set-character-set=charset więcej znajdziesz tu: http://dev.mysql.com/doc/mysql/en/Character_sets.html A z poziomu php można to rozwiązać następująco: <? //na początku skryptu setlocale (LC_COLLATE, 'pl_PL'); //zczytać wiersze z bazy do tablicy.. $array=array("zebra", "ananas", "łąka", "laka", "nisko", "ńańka"); //flaga strcoll mówi, ze stringi będą porównywane z uwzględnieniem lokalnych znaków usort($array, 'strcoll'); print_r($array); ?> Ten post edytował misterLu 6.10.2004, 10:24:16 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 21:08 |