Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [sql] ...ORDER BY miasto
em1X
post 8.04.2002, 19:05:20
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
Seth
post 16.04.2002, 19:24:38
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Mozna by np.: zamienic pierwsza litere na jej odpowiednik w alfabecie ang. np.: ł na l itd. A wlasciwa litere przesunac na koniec
przyklad:
Łódź -> LódźŁ
Potem przy wypisywaniu danych zamienić pierwszy znak na ostatni. 8)

Wiem, ze to rozwiazanie ma kilka wad , ale chyba moze sie przydac :wink:
Go to the top of the page
+Quote Post
kryr
post 16.04.2002, 20:09:02
Post #3





Grupa: Zarejestrowani
Postów: 268
Pomógł: 0
Dołączył: --
Skąd: kielce

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


A moze tak:
ł na -l
ą na -a
ż na -z
ź na --z
itd...
a potem (przy wyciaganiu z bazy) zamieniac z powrotem?
Go to the top of the page
+Quote Post
Seth
post 16.04.2002, 21:23:54
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


nieeeee... bedzie zalatwo biggrin.gif
Go to the top of the page
+Quote Post
Seth
post 17.04.2002, 07:27:51
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Cytat
A moze tak:
ł na -l
ą na -a
ż na -z
ź na --z
itd...
a potem (przy wyciaganiu z bazy) zamieniac z powrotem?

Nie sadze, zeby to bylo dobre rozwiazanie. Przy sortowaniu beda zle wyniki.
Go to the top of the page
+Quote Post
kryr
post 17.04.2002, 13:27:01
Post #6





Grupa: Zarejestrowani
Postów: 268
Pomógł: 0
Dołączył: --
Skąd: kielce

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


:idea: To to moze tak: :wink:
zdublowac pole znazwa, jedna zeby byla bez polskich liter (lodz) a druga z... a sortowac wedlog tego pola bez polskich znakow :?:
Go to the top of the page
+Quote Post
kurtz
post 20.04.2002, 11:03:24
Post #7





Grupa: Przyjaciele php.pl
Postów: 786
Pomógł: 0
Dołączył: 18.03.2002
Skąd: Wroclaw/Warszawa

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


Cytat
Białystok, Lublin, Warszawa, Łódź ; powinno byc Białystok, Lublin, Łódź, Warszawa...

ktos ma pomysl jak zrobic aby rozroznialo polskie znaki?

ustaw odpowiedni jezyk w bazie - use default encoging czy charset o ile mnie pamiec nie myli


--------------------
.. make web your home ..
Go to the top of the page
+Quote Post
em1X
post 22.04.2002, 23:45:47
Post #8





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


kurtz jako jedyny napisal cos sensownego tongue.gif dzieki
Go to the top of the page
+Quote Post
msulik
post 4.06.2002, 08:51:49
Post #9





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


--------------------
misiu | chór

"Zdeterminowany programista potrafi stworzyć fatalny kod w każdym języku"
Allen Holub
Go to the top of the page
+Quote Post
Sergio
post 22.06.2002, 15:15:01
Post #10





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 22.06.2002
Skąd: Szczecin

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


witam.

jak wprowadzic w zycie podpowiedz kuritza questionmark.gif


--------------------
Pozdrawiam Sergio
#GG: 141265
Go to the top of the page
+Quote Post
GeoS
post 23.06.2002, 11:23:43
Post #11





Grupa: Zarejestrowani
Postów: 602
Pomógł: 0
Dołączył: --
Skąd: W - WA -> GRO

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


Cytat
witam.

jak wprowadzic w zycie podpowiedz kuritza questionmark.gif


W winshitie masz plik my.cnf i wpisujesz sobie cos takiego:
Kod
default-character-set=latin1


PS Dane tez musisz miec zapisane z tym kodowaniem, bo inaczej cala zmiana kodowania nic nie da.


--------------------
Zanim zadasz pytanie, zawsze wczesniej zajrzyj do manuala ( pl.php.net/manual/pl/ ).
Szukasz skryptow - www.hotscripts.com
Go to the top of the page
+Quote Post
dragossani
post 25.06.2002, 07:50:38
Post #12





Grupa: Przyjaciele php.pl
Postów: 398
Pomógł: 0
Dołączył: --
Skąd: Poznań

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


Znajdź u siebie plik my.cnf (u mnie jest w /etc/ ale u Ciebie niekoniecznie) i znajdź sekcję [mysqld]. Musi się tam znaleźć następujący zapis:
Cytat
default-character-set = latin2
language = polish

Z moich doświadczeń wynika, że pomaga na wszelkie problemy z językiem w MySql, z sortowaniem włącznie.
Tylko nie zapomnij zmusić serwer do odświeżenia konfiguracji. :wink:


--------------------
cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
Go to the top of the page
+Quote Post
dragossani
post 25.06.2002, 08:17:41
Post #13





Grupa: Przyjaciele php.pl
Postów: 398
Pomógł: 0
Dołączył: --
Skąd: Poznań

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


Hhh... laugh.gif sorki, nie przerzuciłem strony i nie zauważyłem, że gajcy2 już odpowiedział.
[quote]P: To ten.
K: Jak to, too teen? Chcesz powiedzieć, że ten obiekt znajduje się w zasięgu mojego wzroku? Pokaż go to palcem bo chciałbym uwierzyć, że śnię.
P: No to...
K: To?! Co to jest?!
P: No jak to co? Las...
K: Możesz mi powiedzieć... Po chuj mi las?
P: Jak to po chuj? W scenopisie pisze, że las. Jest napisane.
K: W scenopisie?! Znjadź mi to w scenopisie!
P: Proszę. Kiedy wyjechali na wyniosłość drogi, oczom ich ukazał się las.
K: Przewróć stronę.
P: O kurwa...
K: Czytaj.
P: Oczom ich ukazał się las... Krzyży.[/quote]
Hyper, tylko nie wywalaj do Hydeparku, tak mi się skojarzyło :wink:
I sorki za wyrażenia ale bez nich to by nie było to samo.

A tak na marginesie Gajcy2, na pewno latin1? U mnie ustawiłem latin2 i wszystko jest ok. Muszę to sprawdzić...[/quote]


--------------------
cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
Go to the top of the page
+Quote Post
Sergio
post 25.06.2002, 10:33:24
Post #14





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 22.06.2002
Skąd: Szczecin

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


ja ustawilem na czech poniewaz wedlug mnie jest najbardziej zblizony do polskiego :-)


--------------------
Pozdrawiam Sergio
#GG: 141265
Go to the top of the page
+Quote Post
ftrunks
post 5.01.2003, 20:28:18
Post #15





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 18.03.2002

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


Cytat
ja ustawilem na czech poniewaz wedlug mnie jest najbardziej zblizony do polskiego :-)

bardziej od polskiego 8)


--------------------
Pozdrawiam
Krzysztof
Go to the top of the page
+Quote Post
scanner
post 26.05.2003, 09:10:23
Post #16





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




Cytat
I znajdź sekcję [mysqld]. Musi się tam znaleźć następujący zapis:
Cytat
default-character-set = latin2
language = polish
Co może być przyczyną, że podczas uruchamiania demona otrzymuję taki błąd:
Cytat
030526 10:13:16 mysqld started
No variable match for: -O 'default-character-set = latin2'
/usr/local/mysql/bin/mysqld Ver 3.23.56 for pc-linux on i686
Use '--help' or '--no-defaults --help' for a list of available options
030526 10:13:16 mysqld ended


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
kurtz
post 26.05.2003, 11:53:09
Post #17





Grupa: Przyjaciele php.pl
Postów: 786
Pomógł: 0
Dołączył: 18.03.2002
Skąd: Wroclaw/Warszawa

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


Cytat
Co może być przyczyną, że podczas uruchamiania demona otrzymuję taki błąd:
Cytat
030526 10:13:16 mysqld started
No variable match for: -O 'default-character-set = latin2'
/usr/local/mysql/bin/mysqld Ver 3.23.56 for pc-linux on i686
Use '--help' or '--no-defaults --help' for a list of available options
030526 10:13:16 mysqld ended

http://www.mysql.com/doc/en/Character_sets.html twierdzi ze prawidlowa sekcja jest [client] a nie mysqld!

na poczatek sprobuj tego ;)

ps
jesli dobrze koajrze mowiles ze masz slacka - sprawdz czy masz confa w /usr/share/mysql/charsets

pozdrawiam


--------------------
.. make web your home ..
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.04.2024 - 18:54