![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| NCIAC |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.2.2009 Репутация: нет Всего: нет |
Здравствуйте.
Нужно реализовать на сайте комментарии к статьям как на хабре, например. То есть комментарии имеют уровни. Как это лучше сделать? То, как я себе это представляю, требует множество запросов к БД |
|||
|
||||
| patap |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 893 Регистрация: 7.5.2005 Где: Украина, Зп Репутация: 26 Всего: 40 |
-------------------- На боку кобура болталась, сзади шашка отцовская звякала. Впереди меня все хохотало, а позади все плакало (с) |
|||
|
||||
| Jimy |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 4.7.2010 Репутация: нет Всего: 3 |
Ищите в информацию по способам хранения деревьев в БД.
Ключевые слова: Adjacency List, Nested Sets, Materialized Path. |
|||
|
||||
| topy |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 18.2.2008 Репутация: 1 Всего: 1 |
Да, и обратите внимание на CSS
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
на хабре комментарии не скрываются, как на каком-то livejournal. можно и для структуры "список смежности" выбрать все комментарии одним запросом и построить дерево комментариев.
|
|||
|
||||
| NCIAC |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.2.2009 Репутация: нет Всего: нет |
Это вы к чему? уточните пожалуйста, что вы имели ввиду. Это сообщение отредактировал(а) NCIAC - 13.1.2011, 14:41 |
|||
|
||||
| NCIAC |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.2.2009 Репутация: нет Всего: нет |
Зачем? |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: нет Всего: 110 |
для начала стоит перечислить, какие наборы комментариев захочется показывать, а уже потом строить структуру в БД, оптимизированную под эти потребности
например, если чаще всего нужно будет показывать все комментарии к какой-то статье, а уровни использовать только для отступов, то можно в таблице комментариев хранить две ссылки: на статью и на родительский комментарий да, это будет небольшая денормализация, т.к. по родительскому комментарию и так можно определить, к какой статье относятся дочерние комментарии, но это позволит вытащить всё, что нужно, за один запрос, а уже потом расставлять отступы -------------------- qqq |
|||
|
||||
| NCIAC |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 7.2.2009 Репутация: нет Всего: нет |
И как же это сделать одним запросом? На мой взгляд это невозможно |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
не обязательно использовать навороченный nested sets, который предоставляет возможности выбрать "все потомки указанного узла" или "всех родителей указанного узла" одним запросом. можно использовать список смежности и вытягивать все комментарии одним запросом. и за один проход строить их в дерево на стороне РНР. для вывода в HTML использовать рекурсивную функцию. |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: нет Всего: 110 |
синтаксис я уже мог подзабыть, но что-то такое:
это выдаст все комментарии к статье а уже потом можно анализировать их отношения "родитель-потомок", чтобы вывести в правильном порядке и с правильными отступами -------------------- qqq |
|||
|
||||
![]()
|
| Правила форума "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. |