Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> sortowanie polskich liter za pomocą ORDER BY
php programmer
post
Post #1





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


Witam mam taki problem.

Jest baza (dokładnie to postgres, ale myśle, że jest to ogólny problem dla baz)
W bazie są wpisy po polsku, więc zawierają ogonki (ęą itp)
Gdy użyję frazy ORDER BY to owszem sortuje wszystko,
ale nie uzwględnia już ogonków (daje je na koniec).
Czy jest jakaś metoda rozwiązania tego już po stronie bazy danych?

ps. Próbowałem to wyszukać na tym forum, ale ta wyszukiwarka szuka po wszystkich działach, a nie tylko w tym dziale w którym sie jest
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
php programmer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


Wymyśliłem już swoje rozwiązanie.
Otóż robie w tabeli dodatkową kolumnę o nazwie sort.
Na poziome php, pobieram kolumnę, którą chcę posortować,
zamieniam ogonki na odpowiadające im litery, ale dodatkowo
dołączam przy tej podmianie 'zzz', gdybym tego nie dołączył
litera Ś miała by takie same uprawnienia jak S, a tak to jest "gorsza".
Otrzymaną podmianę wrzucam do kolumny sort, a w skrypcie wyświetlającym
sortuje już wedłu tej nowej kolumny. Dla zainteresowanych problemem podaje kod:

  1. <?php
  2.  
  3. $query = "SELECT * FROM osoby";
  4. $result = pg_query($query) or die(pg_last_error());
  5.  
  6. while ($row = pg_fetch_array($result)){
  7.        $sort = $row['imie_nazwisko'];
  8.  
  9.        $ogonki = 'EÓĄŚŁŻŹĆŃęóąśłżźćń';
  10.        $zwykle = 'EOASLZXCNeoaslzxcn';
  11.  
  12.        for ($i=0;$i<18;$i++) 
  13.              $sort = str_replace($ogonki[$i],$zwykle[$i].'zzz',$sort);
  14.  
  15.        $query = "UPDATE osoby SET sort='$sort' WHERE id=".$row['id'];
  16.        $r = pg_query($query);
  17.        $err =  pg_last_error();
  18.        if (strlen($err)>0) echo "<BR>$err<BR>$query<BR>";
  19.        }
  20.  
  21.  
  22. ?>


Oczywiscie to jest kod poprawiający całą baze,
przy dodawaniu jedengo rekordu
nalezało by dodwać kolumnę sort tylko dla dodawanego rekordu.

Ten post edytował php programmer 12.09.2005, 11:34:26
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: 25.09.2025 - 21:52