![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
Mam tabele z roznymi danymi a m.in. nazwami miast ktore chce rozmieszczac alfabetycznie. Niestety niektore z miast zaczynaja sie polskimi znakami jak Świnoujscie. Gdy wykonuje zapytanie: select * from tabela order by miasto asc zwraca mi od a-z miasta jednak nie tak jak chcialem... przyklad:
Białystok, Lublin, Warszawa, Łódź ; powinno byc Białystok, Lublin, Łódź, Warszawa... ktos ma pomysl jak zrobic aby rozroznialo polskie znaki? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 31.03.2002 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
W międzyczasie wpadłem na rozwiązanie "skryptowe", w razie, gdyby ktoś nie mógł zmienić konfiguracji.
Kod <?php
$convtab_from_pl = array('ą'=>'a/', 'ć'=>'c/', 'ę'=>'e/', 'ł'=>'l/', 'ń'=>'n/', 'ó'=>'o/', 'ś'=>'s/', 'ź'=>'x/', 'ż'=>'z/', 'Ą'=>'A/', 'Ć'=>'C/', 'Ę'=>'E/', 'Ł'=>'L/', 'Ń'=>'N/', 'Ó'=>'O/', 'Ś'=>'S/', 'Ź'=>'X/', 'Ż'=>'Z/'); // byc moze trzeba bedzie zamienić 'ż' na 'ź' i 'Ż' na 'Ź' $convtab_to_pl = array (); foreach ($convtab_from_pl as $k => $v) { $convtab_to_pl[$v] = $k; } function code_from_pl ($arg) { global $convtab_from_pl; $arg = preg_replace ('/([acelnosACELNOS])/','1 ',preg_replace ('/Z/','X ',preg_replace ('/z/','x ',$arg))); $arg = strtr($arg,$convtab_from_pl); return $arg; } function code_to_pl ($arg) { global $convtab_to_pl; $arg = preg_replace ('/([acelnosACELNOS])s/','1',preg_replace ('/Xs/','Z',preg_replace ('/xs/','z',$arg))); $arg = strtr($arg,$convtab_to_pl); return $arg; } $tekst = array('Łódź', 'Zażółć gęślą jaźń', 'Górsk', 'Łódzki Pcim', 'Lubicz', 'Goszcz', 'Zakopane', 'Grzeszne Myśli'); // przykładowa tablica danych. $n = count($tekst); echo ('Nie posortowane:<br>'); for ($i = 0; $i < $n; $i++) { echo ('<b>'.$i.':</b> '.$tekst[$i].'<br>'); } $temp = $tekst; echo('<br>Posortowane "na prymitywa" (według zasady "<b>z</b>" < "<b>ć</b>"...):<br>'); sort ($temp); for ($i = 0; $i < $n; $i++) { echo ('<b>'.$i.':</b> '.$temp[$i].'<br>'); } echo('<br>Zakodowane:<br>'); // gwóźdź programu - tak zakodowane dane wstawiamy do bazy. w bazie sortujemy najzwyklej w świecie: ORDER BY. for ($i = 0; $i < $n; $i++) { $tekst[$i] = code_from_pl ($tekst[$i]); echo ('<b>'.$i.':</b> '.$tekst[$i].'<br>'); } sort ($tekst); // "symulacja";) ORDER BY echo ('<br>Posortowane poprawnie:<br>'); for ($i = 0; $i < $n; $i++) { echo ('<b>'.$i.':</b> '.(code_to_pl($tekst[$i])).'<br>'); } ?> W ostatniej chwili zauważyłem, że jest jakiś problem w kodowaniu polskich znaków na forum, więc zamieszczam to samo pod adresem http://strony.wp.pl/wp/msulik/php.pl/116/sort.php.html |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.09.2025 - 21:45 |