![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 12.03.2003 Ostrzeżenie: (0%) ![]() ![]() |
Mam bazę danych, z której pobieram infornacje z jednej tabeli prostym zapytaniem select:
[php:1:c1c58c6b05]<?php $pytpow=mysql_query("SELECT pow.Nazwa FROM pow WHERE pow.Kod LIKE '$nr%' ORDER BY pow.Nazwa"); while( $pow=mysql_fetch_row($pytpow) ) { echo"$pow[0]<br>"; } ?>[/php:1:c1c58c6b05] Chcę żeby dane były posortowane względem nazwy. Tymczasem sortowanie działa pomijajac polskie znaki - wyrazy zaczynąjace się od polskich znaków ustawia na końcu. To znaczy w rezultacie dostaję: Cedynia Kutno Szczecin Warszawa Świnoujście Łobez Czy wiecie co jest nie tak - tz. co trzeba zrobić, aby dostać rezultat: Cedynia Kutno Łobez Szczecin Świnoujście Warszawa |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 23.03.2003 Skąd: Radom Ostrzeżenie: (0%) ![]() ![]() |
Moze sprobuj zrobic wpis do bazy bez polskich liter, a juz w skrypcie uzyj str_replace.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 20.03.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj po zapytaniu posortować tablicę $pow poprzez sort(). Nie wiem tylko, czy to też przypadkiem nie daje polskich ogonków na koniec (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) .
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 20.03.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Moze sprobuj zrobic wpis do bazy bez polskich liter, a juz w skrypcie uzyj str_replace.
Ale jak skrypt miałby wykrywać, czy Swinoujscie to Świnoujście, a Cedynia to nie Ćędynią... |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 12.03.2003 Ostrzeżenie: (0%) ![]() ![]() |
Niestety funkcja sort($pow); też ustawia polskie znaki na końcu.
|
|
|
![]()
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
[php:1:c48fcb93ab]<?php
$str['ą']='A&OGON||';//przykład $str['ź']='Z&KRESKA||'; $str['ż']='Z&KROPKA||';//ź jest przd ż w alfabecie, e jest przed o //zanim włożysz do bazy to foreach($str as $s){ $do_wlozenia=str_repalace($s['key'], $s['value'], $do_wlozenia); } ?>[/php:1:c48fcb93ab] a przy wyjmowaniu[php:1:c48fcb93ab]<?php $str['ą']='A&OGON||';//przykład $str['ź']='Z&KRESKA||'; $str['ż']='Z&KROPKA||';//ź jest przd ż w alfabecie, e jest przed o //zanim włożysz do bazy to foreach($str as $s){ $wyjete=str_repalace($s['value'], $s['key'], $wyjete); } ?>[/php:1:c48fcb93ab] taki oto prosty skrypt, tylko uważaj przy robieniu nazw, żeby zgadzały się z kolejnością alfabetu. Aha, i zamiast '&' wstaw jakiś znak który jest "za" literami |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 20.03.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Hmmmm... tak sobie myślę... Gdybyś dane do bazy wpisywał tak, że jeśli na początku jest literka z ogonkiem, stawialbyś literę bez ogonka, a po niej jakiś znaczek (który po sortowaniu jest za wszystkimi literami), czyli np: S*winoujście (nie wiem, czy gwiazdka jest po literach, będziesz musiał poszukać odpowiedniego znaczka sam). Skrypt wczytywał by dane do tablicy tak:
[php:1:4acbffe30a]<?php $i=0; while($pow=mysql_fetch_row($pytpow)) { if(substr($pow[$i], 0 ,2)=="S*") $pow[$i]="Ś".substr($pow[$i], 2 , strlen($pow[$i])-1); // I tak dla wszystkich liter z ogonkami i++; } ?> [/php:1:4acbffe30a] |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 12.03.2003 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za pomoc
Rzeczywiście, jet to jakieś wyjście (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 100 Pomógł: 0 Dołączył: 25.01.2003 Skąd: mazury, wawa Ostrzeżenie: (0%) ![]() ![]() |
No proszę, nie jesteś pierwszy (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) :
http://forum.php.pl/viewtopic.php?t=116&hi...+polskie+litery |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 28.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi sie ze najprostszym sposobem (oczywiscie jeżeli macie dostęp do serwera mysql) jest uruchomienie go :
mysqld --default-character-set=win1250 TO NAPRAWDE DZIALA BEZ ZADNYCH KOMBINACJI (IMG:http://forum.php.pl/style_emoticons/default/aaevil.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 18:21 |