Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> sortowanie wg. polskich znaków
tsharek
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Vertical
post
Post #2





Grupa: Zarejestrowani
Postów: 848
Pomógł: 0
Dołączył: 7.07.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Możesz oczywiście dać "ORDER BY tekst DESC", ale wtedy znaki A-Z da Ci również w odwróconej kolejności... pokombinuj coś z funkcją ereg
Go to the top of the page
+Quote Post
tsharek
post
Post #3





Grupa: Zarejestrowani
Postów: 300
Pomógł: 1
Dołączył: 22.09.2003
Skąd: Czeladź

Ostrzeżenie: (0%)
-----


nie o to mi chodziło:)
chodzi o konfiguracje mysqla z poziomu php:)
Go to the top of the page
+Quote Post
misterLu
post
Post #4





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 27.08.2004

Ostrzeżenie: (0%)
-----


Cytat
chodzi o konfiguracje mysqla z poziomu php:)

Mozesz to sprecyzować?
Konfiguracji MySQLa z punktu widzenia php można dokonac w pliku php.ini.
Go to the top of the page
+Quote Post
scanner
post
Post #5





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




my.ini - ustawienia mysql'a
default-charset =Latin2

Powinno IMHO wystarczyć
Go to the top of the page
+Quote Post
misterLu
post
Post #6





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
Go to the top of the page
+Quote Post
scanner
post
Post #7





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Masz całkowitą rację.
Tylko jedna uwaga - mówiłem o my.ini a nie php.ini (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
tsharek
post
Post #8





Grupa: Zarejestrowani
Postów: 300
Pomógł: 1
Dołączył: 22.09.2003
Skąd: Czeladź

Ostrzeżenie: (0%)
-----


wielkie dzięki za odpowiedzi:) namewno skożystam z rad:) tylko wydawało mi się że może istnieć jakiś sposób zmieniania my.ini z poziomu php (tak jak to się ma dla php.ini) dla pojedyńczego kompilowania kodu php. no ale jak się nie da to sprubuje pogadać z adminem żeby zmienił konfila my.ini.

Pozdrawiam serdecznie
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 06:41