Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]Latin1 a poprawne sortowanie
Forum PHP.pl > Forum > Przedszkole
ksiegol
Witajcie

Mam następujący problem. Serwer, na którym znajduje się tworzona przeze mnie baza danych, sortuje według zestawu znaków latin1. Nie mam możliwości zmiany ustawień serwera. Ogólnie z polskimi znakami nie mam problemu, są wyświetlane poprawnie, ale sytuacja jest już mniej ciekawa jeśli chodzi o wyświetlanie list w kolejności alfabetycznej. Polskie znaki są oczywiście na końcu. Czy możecie w związku z tym poradzić jakiś sposób obejścia tej przeszkody i zmuszenia skryptu do prawidłowego sortowania po polsku? Zaznaczę, że zmiana serwera mysql nie wchodzi niestety w grę.

Będę wdzięczny za wszelkie wskazówki

pozdrawiam

Adam
drPayton
Zestaw porównywania znaków (dla kolumn tekstowych tabel i ew bazy i całych tabel) ustaw na ten, którego chcesz używać (dajmy na to latin2 [czyli iso-8859-2]): jako latin2_general_ci.
np:
  1. ALTER DATABASE baza DEFAULT CHARACTER SET latin2 COLLATE latin2_general_ci
  2. ALTER TABLE tabela CHARACTER SET latin2 COLLATE latin2_general_ci;

W skrypcie zaraz po nawiązaniu połączenia wykonaj zapytanie
  1. <?php
  2. mysql_query("SET NAMES 'latin2'");
  3. ?>

Jak to nie pomoże to chyba już nic innego...
Ogólnie problem wynika stąd, że polskie znaki diakrytyczne (jak zresztą wszystkie inne) są umieszczone za alfabetem podstawowym, więc z punktu widzenia sortowania ą jest większe niż z...
ksiegol
Dzięki za propozycję, ale niestety nie zadziałało.

Spotkałem się gdzieś natomiast z propozycją, aby dane z bazy sczytać do tablicy i potem już na tablicy dokonać właściwego sortowania. Nie wiem jednak jak za bardzo miałoby to wyglądać.

z góry dzięki za pomoc i pozdro

Adam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.