Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [sql] ...ORDER BY miasto
em1X
post
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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
msulik
post
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>" &lt; "<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
Go to the top of the page
+Quote Post

Posty w temacie


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: 16.09.2025 - 21:45