Принцип сортировки званий

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 15 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Принцип сортировки званий

Сообщение Booker »

По какому принципу сортируются звания при их добавлении? Одни сразу поднимаются на самый верх списка, другие остаются внизу. Не могу уловить системы.
Нужно, чтобы одно из званий постоянно оставалось самым нижним в списке.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Принцип сортировки званий

Сообщение Sheer »

Код: Выделить всё

				$sql = 'SELECT *
					FROM ' . RANKS_TABLE . '
					ORDER BY rank_min ASC, rank_special ASC';
По минимуму сообщений и по признаку "Специальное звание"
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 15 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: Принцип сортировки званий

Сообщение Booker »

По минимуму понятно, а специальные звания между собой как сортируются?
Добавил десяток званий, одни остались внизу, другие поднялись вверх. Смотрю в таблице ranks, думал, они там по порядку номера id идут, изменил номер id на самый последний, ничего не меняется. Стрелок передвигать вверх-вниз тоже нигде нет.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Принцип сортировки званий

Сообщение Sheer »

Booker писал(а):а специальные звания между собой как сортируются?
rank_special ASC
rank_special может принимать значение 0 или 1

Добавлено спустя 1 минуту 22 секунды:
Booker писал(а):ничего не меняется
А что должно измениться, если они сортируются
Sheer писал(а):По минимуму сообщений и по признаку "Специальное звание"
:?:
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 15 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: Принцип сортировки званий

Сообщение Booker »

У специальных званий ещё нет никаких сообщений, 0 у всех. Тем не менее одни поднялись вверх, а другие так и остались внизу.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Принцип сортировки званий

Сообщение Sheer »

Потому что они специальные.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 14 лет 4 месяца
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

Re: Принцип сортировки званий

Сообщение xisp »

Sheer, походу он хочет сказать, что одни специальные звания поднялись, а другие нет. Впрочем, могу и ошибаться. А может ошибается он.
В общем Booker, поясните свою позицию))
phpBBex
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 15 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: Принцип сортировки званий

Сообщение Booker »

Добавляю по очереди специальные звания. ВСЕ специальные. Часть ведёт себя "как обычно" - добавляешь, оно так в нижней позиции и остаётся, добавляешь следующее, оно теперь становится последним, предыдущее поднимается на ступень выше и т.п. А другие ведут себя иначе: сразу после добавления звание становится самым первым (верхним) в списке, другое вставляется вообще в середину списка.
Звания ВСЕ специальные. Вот и спрашиваю, отчего зависит такое их поведение при добавлении. И как опустить одно из званий в постоянно нижнюю позицию.
Вот скрин (все специальные звания).
Изначально были два (там, где картинки с квадратиками). При добавлении новых (которые прямоугольники) они добавляются и вверх от старых, и вниз. От алфавита зависеть не может - у меня нет текстового описания званий. От id в таблице ranks тоже не зависит. Так от чего?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Принцип сортировки званий

Сообщение Татьяна5 »

Код: Выделить всё

		$sql = 'SELECT *
			FROM ' . RANKS_TABLE . '
			ORDER BY rank_special DESC, rank_min ASC, rank_title ASC';
Специальное звание или нет, потом по минимуму сообщений, потом по заголовку. Специальные звания с одинаковыми заголовками не отсортированы.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Принцип сортировки званий

Сообщение Sheer »

Booker писал(а):Так от чего?
Ну написано же
ORDER BY rank_min ASC, rank_special ASC
то есть по полям rank_min иrank_special, никакие другие, в том числеrank_id в сортировке не участвуют. Если идет сортировка по rank_special, то при прочих равных условиях, строки таблицы будут выведены в том же порядке, в каком они записаны в таблице в БД. А в каком порядке они будут записаны - это как бог, вернее mysql, на душу положит, ну вот так он работает.

Добавлено спустя 4 минуты 7 секунд:
Если нужно обособить в таблице какое-то одно звание, значит нужно добавить столбец в таблицу ranks, например foo
В строке с особым рангом а это поле записать 1, в остальные 0, и сортировать по этому полю.

Код: Выделить всё

		$sql = 'SELECT *
			FROM ' . RANKS_TABLE . '
			ORDER BY foo ASC, rank_special DESC, rank_min ASC, rank_title ASC';
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 14 лет 4 месяца
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

Re: Принцип сортировки званий

Сообщение xisp »

Sheer писал(а):В строке с особым рангом а это поле записать 1, в остальные 0, и сортировать по этому полю.
Вообще можно сделать произвольную сортировку. Тогда код будет выглядеть чуть иначе:

Код: Выделить всё

		$sql = 'SELECT *
			FROM ' . RANKS_TABLE . '
			ORDER BY foo DESC, rank_special DESC, rank_min ASC, rank_title ASC';
Поле foo будет означать приоритет, чем больше в нём значение- тем выше выведется ранг.
П.С. не тестировал.
phpBBex
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 15 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: Принцип сортировки званий

Сообщение Booker »

Добавил столбец в базу, сортировка в списке званий по этому дополнительному полю получилась.
Но есть один нюанс. При присваивании звания пользователю в его профиле в выпадающем списке не сортируется по новому, там сортировка осталась как и была. Где это изменить?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Принцип сортировки званий

Сообщение Sheer »

Booker писал(а):Где
includes/ucp/ucp_profile.php
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 15 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: Принцип сортировки званий

Сообщение Booker »

Вроде нашёл в includes/acp/acp_users.php

Код: Выделить всё

$sql = 'SELECT *
					FROM ' . RANKS_TABLE . '
					WHERE rank_special = 1
					ORDER BY rank_title';
Заменил на

Код: Выделить всё

$sql = 'SELECT *
					FROM ' . RANKS_TABLE . '
					WHERE rank_special = 1
					ORDER BY моё_поле DESC, rank_title';
Надеюсь, что правильно.

Вернуться в «Поддержка phpBB 3.0.х»