Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> sortowanie danych
jucholk
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Yasieq
post
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.
Go to the top of the page
+Quote Post
Cod
post
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) .
Go to the top of the page
+Quote Post
Cod
post
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ą...
Go to the top of the page
+Quote Post
jucholk
post
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.
Go to the top of the page
+Quote Post
Jabol
post
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
Go to the top of the page
+Quote Post
Cod
post
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]
Go to the top of the page
+Quote Post
jucholk
post
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)
Go to the top of the page
+Quote Post
lisu
post
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
Go to the top of the page
+Quote Post
jmalina
post
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)
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: 25.08.2025 - 18:21