decoder
Новичок
Вывод элементов списка по группам...
В базе хранятся записи. У всех записей есть поле aka `type` и есть какие-то одинаковые значение (из-за того, что относятся к одному типу).
Требуется вывести список, группируя элементы по полю `type` и при этом выводить одинаковые значения.
Упрощенно структура таблицы выглядит так:
id int,
type varchar(10),
expdate int(10)
title varchar(10)
type - тип
expdate - срок годности
title - название элемента списка
Допустим, вот такое должно получится...
- группа "Еда", срок годности: 7 дней
-- рыба
-- торт
-- молоко
- группа "Компьютеры", срок годности: 1 год
-- IBM
-- DELL
-- ...
и так далее...
Единственное, что пришло в голову мне, это:
1) выборка из базы (ORDER BY `type`)
2) инициируем переменную текущего типа ($curType)
-- начало цикла --
3) проверяем, если $curType пуста, то вписываем $row['type'] (допустим в нее мы выбираем строку) и выводим данные о группе;
если $curType отлична от $row['type'], но не пуста, то "закрываем" группу и начинаем новую (вписываем $row['type'] в $curType и выводим данные о группе)
4) выводим элемент списка
-- конец цикла --
Примерно так я сейчас решаю эту задачу... Мне интересно, есть ли более ..мм.. "нормальные" методы??
Этот метод мне не нравится тем, что приходится создавать тучу темплейтов: "бокс" группы, начало группы, конец группы, элемент списка. Мне же интересен вариант, чтобы их было только два: "бокс" группы и элемент списка.
(На сайте искал, в гугле искал. Нужного не нашел. Возможно, немного не в тот форум пишу... Но направил сюда, так как решение вполне может быть связано с "правильными" запросами к мускулю...)
Спасибо.
В базе хранятся записи. У всех записей есть поле aka `type` и есть какие-то одинаковые значение (из-за того, что относятся к одному типу).
Требуется вывести список, группируя элементы по полю `type` и при этом выводить одинаковые значения.
Упрощенно структура таблицы выглядит так:
id int,
type varchar(10),
expdate int(10)
title varchar(10)
type - тип
expdate - срок годности
title - название элемента списка
Допустим, вот такое должно получится...
- группа "Еда", срок годности: 7 дней
-- рыба
-- торт
-- молоко
- группа "Компьютеры", срок годности: 1 год
-- IBM
-- DELL
-- ...
и так далее...
Единственное, что пришло в голову мне, это:
1) выборка из базы (ORDER BY `type`)
2) инициируем переменную текущего типа ($curType)
-- начало цикла --
3) проверяем, если $curType пуста, то вписываем $row['type'] (допустим в нее мы выбираем строку) и выводим данные о группе;
если $curType отлична от $row['type'], но не пуста, то "закрываем" группу и начинаем новую (вписываем $row['type'] в $curType и выводим данные о группе)
4) выводим элемент списка
-- конец цикла --
Примерно так я сейчас решаю эту задачу... Мне интересно, есть ли более ..мм.. "нормальные" методы??
Этот метод мне не нравится тем, что приходится создавать тучу темплейтов: "бокс" группы, начало группы, конец группы, элемент списка. Мне же интересен вариант, чтобы их было только два: "бокс" группы и элемент списка.
(На сайте искал, в гугле искал. Нужного не нашел. Возможно, немного не в тот форум пишу... Но направил сюда, так как решение вполне может быть связано с "правильными" запросами к мускулю...)
Спасибо.