![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| SergV |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 4.8.2006 Где: Германия Репутация: нет Всего: 1 |
Вобщем нужна помощь, сам не успеваю разобраться что к чему.
Есть MySQL таблица категорий, из которой берутся некоторые значения для выпадающего списка, и всё это дело сортируется по полю Ordering. Тоесть вывод получается в том варианте, в котором всё было отсортированно в управлении категориями. Суть заключается в том, что надо сделать возможность выбора сортировки пользователем, тоесть чтобы он сам решал, как в списке будут отсортированны категории и субкатегории. Для этого из базы получаем массив в виде id, name, key и ordering, для всех записей. Поля key и ordering имеют свои значения для категорий и субкатегорий, в key указано 0 для категориии, а если это субкатегория, то указано id категории. Для сортировки по порядку, пойдёт таже функция что есть, а вот для сортировки по алфавиту, чтобы было без разницы в каком регистре первая буква, и чтобы также сортировалось в субкатегориях, вот эту функцию мне и надо. Может кто подскажет примером, как это реализовать, с учетом регистра и кирилицы и латиницы. Нужно чтобы это выглядело примерно так: Город - Красноярск - Ленинград - Москва - вerlin - Bremen Страна - Россия - Deutscland - France Auto - Жигули - запороже - BMW - Ford В общем, чтобы либо кирилица, либо латиница были первыми по списку для категорий и субкатегорий, и чтобы регистр не влиял. Я пробовал в имеющейся функции получения списка, с функцией sort(), но там сортировка по имени получается в порядке, сначало все с большой буквы, потом с маленькой, ну и сортировка субкатегорий не происходит, остаётся как для порядка. Заранее благодарен. |
|||
|
||||
| Sannis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 14.8.2007 Где: Москва Репутация: 6 Всего: 13 |
Используйте usort, сможете задать в функции сравнение приведение к одному регистру, чтобы это не влияло.
Добавлено через 1 минуту и 32 секунды Да, если отсортировать эти элементы как один массив, а потом выводить по категориям, то оно и будет правильно отсортировано... Или вы хотите сразу получить список в порядке для вывода? -------------------- |
|||
|
||||
| SergV |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 4.8.2006 Где: Германия Репутация: нет Всего: 1 |
Не важно, в каком порядке будет всё это сделано, важно чтобы результат был как в примере. Конечно, я думаю, что если получить список уже отсортированным прямо из базы, это будет лучше, но можно и отсортировать в пхп сразу. Щас найду ту функцию, что сортирует по порядку(ordering), может её можно будет переделать. -------------------------------------------------------------------------------------------------------------
я менял @$category_list .= "<option value='$category_id' "; на @$category_list .= "<option value='$category_name ";, и результат сортировки как писал выше, сначало с большой буквы, потом с маленькой, а субкатегории сортировка по ordering. Выборка из базы как order by name не влияет на сортировку, так как сортируется всё ниже в коде. Это сообщение отредактировал(а) SergV - 14.6.2008, 13:07 |
||||
|
|||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
SergV, а изменить сортировку списка при выборке из базы никак нельзя, если пользователь указал свой порядок?
Или вообще, сделать это на JS, если у Вас весь список целиком размещается на странице. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| SergV |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 4.8.2006 Где: Германия Репутация: нет Всего: 1 |
IZ@TOP, список выпадающий, плюс сортировка не просто всех данных по списку, а с разделением по категориям и их субкатегориям. Иными словами, если брать отсортированный список прям из базы, то это не одно обращение к базе а несколько, и чем больше список категорий и субкатегорий, тем больше обращений.
Насчет ява скрипт, это можно и в ява скрипт конечно сделать, но если у пользователя ава скрипт отключен, то досвидания со списком. Потом, я ява скрипт не знаю, а пхп знаю в общих чертах, в подробности не углублялся, а что касается базы, так и вообще ток начинаю разбираться. Поэтому и прошу помощи, так как нет сейчас особо времени на углублённое изучение пхп и базы. Ладно..., я уже прикинул как это можно сделать, что нибуть придумаю, хотябы с учетом того, что все категории и субкатегории будут начинаться с большой буквы. |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
SergV, в один запрос можно вполне уложиться. Сортируй по имени родителя, потом по имени.
Могу пример при необходимости привести, если ты совсем новичок. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| SergV |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 4.8.2006 Где: Германия Репутация: нет Всего: 1 |
IZ@TOP, пример лишний не помешает, я пока с циклами в пхп не разбирался, тут по другому чем в Delphi, а запросы к базам, так и вообще пока для меня новое, ток боле мене разобрался как просто получать все данные и выборочно. У меня пока нет времени на все тонкости, я веб дизайном занимаюсь, и пхп мне нужен в основном для этих целей, да для создания своих несложных модулей и компонентов на сайт.
|
|||
|
||||
| IZ@TOP |
|
||||||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Вот небольшой пример.
Таблица:
Соответственно, категории имеют parent_id равный нулю, вложенные - равным id родителя. Выборка:
Вывод:
Этот код верен для двумерной вложенности категорий. Для динамической вложенности подход будет чуть сложнее. Это сообщение отредактировал(а) IZ@TOP - 16.6.2008, 17:13 -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
||||||
|
|||||||
| SergV |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 4.8.2006 Где: Германия Репутация: нет Всего: 1 |
IZ@TOP, Спасибо, хороший пример, попробую подстроить его в функцию, потом отпишусь что вышло.
Есть только вопрос, если я правильно понял, то выборка происходит по ordering, а значить и сортировка будет по ordering? Или title ASC меняет сортировку и в список $categories получаем отсортированным по имени? Потом, не понял, для чего в цикле, в присаваивании переменной $categories[$row['parent_id']][] последние пустые квадратные скобки?
Это пока не стоит на повестке дня, главное получить двумерный список, и в алфавитном порядке. |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Первая сортировка по ordering в порядке убывания, вторая сортировка по заголовку в порядке возрастания (т.е. по алфавиту). Соответственно, если у нес везде ordering 0 - сортировка в конечном счете будет исключительно по алфавиту. И, соответственно, ordering имеет больший приоритет по сортировке.
Это необходимо для формирования категорий. Иначе у тебя для любого parent_id будет только одна запись потомка, а нам нужен список (массив). -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| SergV |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 197 Регистрация: 4.8.2006 Где: Германия Репутация: нет Всего: 1 |
IZ@TOP, спасибо за помощь, твой пример думаю пригодится в будущем.
Я уже элементарно решил эту проблему, взяв код такого же списка из функции в админке категории, и заменил им этот код, всё работает как надо. С дуру не мог сразу глянуть как в админке сделано, решил что там также, а там намного лучше даже в отношении построения дерева. В общем вопрос снимается. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |