Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Проблема с сортировкой


Автор: VladimirX 5.9.2006, 23:40
Здравствуйте.

Имеется таблица в БД (Mysql). В поле с именем fio хранятся фамилии имена и отчества некоторых пользователей, на русском языке в кодировке cp1251. Необходимо по запросу упорядочить эти ФИО по алфавиту. Делаю запрос 
select * from mytable order by fio;
Однако ничего не выходит, порядка не видно(некоторые фамилии на "Б" впереди "А" и т.д.)

Как осуществить задуманное? 
Спасибо.

Автор: Opik 6.9.2006, 01:25
Код

select * from mytable order by fio ASC;

Автор: -=Ustas=- 6.9.2006, 08:24
VladimirX, если сортировка нарушается при

Цитата(Opik @  6.9.2006,  01:25 Найти цитируемый пост)
select * from mytable order by fio ASC;


То нужно кодировку нужную базе задавать. Поищи, таких тем на форуме полно.

Автор: Vaulter 6.9.2006, 08:43
VladimirX, 
Код

@ $this->_query('SET NAMES cp1251');
@ $this->_query('SET COLLATION_CONNECTION=CP1251_GENERAL_CI');
@ $this->_query('SET CHARACTER_SET_CLIENT = cp1251');

исправлять на mysql_query не хотца. сами, сами... smile

Автор: VladimirX 6.9.2006, 23:15
Ребят, ну ситуация такая:

1) ASC не помогло

2) Исправил конфиг мускула: 
[mysqld]
default-character-set=cp1251
(вместо latin1) Перезагрузил сервер..

Вывод русский, но сортировки нет...

3)

Код

$this->_query('SET NAMES cp1251');
$this->_query('SET COLLATION_CONNECTION=CP1251_GENERAL_CI');
$this->_query('SET CHARACTER_SET_CLIENT = cp1251');


Подобные вещи приводят к появлению сплошных знаков вопроса вместо фамилий....

В списке переменных базы следующая информация:
Код

'character_set_client', 'utf8'
'character_set_connection', 'utf8'
'character_set_database', 'latin1'
'character_set_results', 'utf8'
'character_set_server', 'cp1251'
'character_set_system', 'utf8'
'collation_connection', 'utf8_general_ci'
'collation_database', 'latin1_swedish_ci'
'collation_server', 'cp1251_general_ci'


Все фамилии ввожу стандартно, через форму браузера. Результат - или нет сортировки или знаки вопроса...

Автор: -=Ustas=- 7.9.2006, 09:18
Цитата(VladimirX @  6.9.2006,  23:15 Найти цитируемый пост)
'character_set_client', 'utf8'
'character_set_connection', 'utf8'
'character_set_database', 'latin1'
'character_set_results', 'utf8'
'character_set_server', 'cp1251'
'character_set_system', 'utf8'
'collation_connection', 'utf8_general_ci'
'collation_database', 'latin1_swedish_ci'
'collation_server', 'cp1251_general_ci'


Жуть smile Версия мускула какая?

Автор: VladimirX 7.9.2006, 21:18
Версия 4.1.16 под win32

Автор: -=Ustas=- 7.9.2006, 21:30
VladimirX, попробуй, мож получится:
Код

[client]
default-character-set=cp1251

[mysql]
default-character-set=cp1251

[mysqld]
default-character-set=cp1251
collation-server=cp1251_bin
collation_connection=cp1251_bin
collation_database=cp1251_bin


Автор: Aliance 18.11.2006, 19:30
У меня 4.0 мускул, сортировка не совсем верная. Что поможет мне?

Автор: BossIT 19.11.2006, 11:24
// Переводим кодировку базы в нужный формат
<?
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
?>

А какой тип указан у поля "FIO"?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)