|
|
|
| Как обычно на php+mysql реализуются комментарии к статьям, форумы и прочее?
Если представить, что есть таблица id комментария, id родителя, [имя пользователя, текст и прочая информация]. Каким образом дальше обрабатывается всё это и выводится дерево, например как в комментариях на этом форуме.
Перелопатил кучу сайтов, информации минимум. Несколько совсем элементарных способов с рекурсивным вызовов БД.
Хочется сделать всё красиво и по максимум современно=)
Надеюсь на вашу помощь! | |
|
|
|
|
|
|
|
для: sponge
(17.07.2009 в 04:09)
| | >Несколько совсем элементарных способов с рекурсивным вызовов БД.
Которые не устраивают чем? | |
|
|
|
|
|
|
|
для: sponge
(17.07.2009 в 04:09)
| | >Хочется сделать всё красиво и по максимум современно
для этого добавьте к элементарным способам javascript | |
|
|
|
|
|
|
|
для: psychomc
(17.07.2009 в 10:06)
| | А он тут каким боком? | |
|
|
|
|
|
|
|
для: sim5
(17.07.2009 в 10:13)
| | а разве красота и современность это не клиентская часть? | |
|
|
|
|
|
|
|
для: psychomc
(17.07.2009 в 11:44)
| | А разве вывести "лесенкой" комментарии, это прерогатива JS? | |
|
|
|
|
|
|
|
для: sim5
(17.07.2009 в 11:48)
| | я думаю, что автор, когда писал про современность, не имел ввиду просто вывести комментарии лесенкой (мб я ошибаюсь)... | |
|
|
|
|
|
|
|
для: psychomc
(17.07.2009 в 12:04)
| | Забавный виток совершила история: первые форумы были древовидные, а первые комментарии - линейные... постепенно в моду стали входить линейные форумы и древовидные комментарии...
Теперь уже редко встретишь древовидный форум:) | |
|
|
|
|
|
|
|
для: Loki
(17.07.2009 в 13:07)
| | Это всё девелореры напридумывают невесть чего, а нам, посетителям, потом мучайся и привыкай...
:) | |
|
|
|
|
|
|
|
для: psychomc
(17.07.2009 в 10:06)
| | >>Хочется сделать всё красиво и по максимум современно
>для этого добавьте к элементарным способам javascript
а сверху повяжите бантик. | |
|
|
|
|
|
|
|
для: Trianon
(17.07.2009 в 10:48)
| | тип того | |
|
|
|
|
|
|
|
для: psychomc
(17.07.2009 в 11:42)
| | спасибо всем за спам =)
а если можно по существу..
пока реализовал дерево вот таким боком: http://www.php.su/articles/?cat=phpdb&page=004
посоветовали делать выборку с использованием хранимых процедур, но оказалось у хостера mysql 4.1.
есть id коммента - id родителя. как дальше выбрать данные из базы, чтобы получилось как на этом форуме? без всяких доп полей типа sortorder (см ссылку выше).
вот в чем был вопрос.. а красиво - значит современно, например с использованием тех же хранимых процедур | |
|
|
|
|
|
|
|
для: sponge
(17.07.2009 в 17:23)
| | >спасибо всем за спам =)
>а если можно по существу..
А если по существу, то я задал Вам вопрос. По существу. А Вы на него не ответили. | |
|
|
|
|
|
|
|
для: Trianon
(17.07.2009 в 17:35)
| | Ну тут аналогия с Петей и волками=) Не разглядел зерна во всем флуде.
А тем плох вариант с рекурсивными запросами, что запросом слишком много выходит. Когда можно сделать все в один. | |
|
|
|
|
|
|
|
для: sponge
(17.07.2009 в 17:38)
| | Можно обойтись одним запросом, затянув всё дерево в массив.
А потом уже вести рекурсию. Не трогая сервер.
Собственно, текущая версия форума, как я понимаю, так и делает.
Можно также применить методику nested sets для хранения дерева.
Если дерево подвергается изменениям нечасто - более чем достойный вариант. | |
|
|
|
|
|
|
|
для: Trianon
(17.07.2009 в 17:44)
| | >Можно обойтись одним запросом, затянув всё дерево в массив.
>А потом уже вести рекурсию. Не трогая сервер.
>Собственно, текущая версия форума, как я понимаю, так и делает.
т.е. рекурсия средствами php?
>Можно также применить методику nested sets для хранения дерева.
>Если дерево подвергается изменениям нечасто - более чем достойный вариант.
спасибо, надо будет прочесть материал по этой методике.
Как считаете, метод приведенный выше (на php.su) имеет место быть?
Просто вести в табличке еще два поля - level и sortorder. Level - уровень сообщения, а sortorder строка, по которой будет проходить сортировка.
Например, имеем сообщения (id) и генерируемая для них строка sortorder
-1 - sortorder=0000001
--2 - sortorder=00000010000002
---5 - sortorder=000000100000020000005
-3 - sortorder=0000003
--8 - sortorder=00000030000008 | |
|
|
|
|
|
|
|
для: sponge
(17.07.2009 в 17:53)
| | есть три базовые методики: adjacency list, nested sets и matherialized paths.
Вы описываете третий. он обладает рядом количественных ограничений и лично мне по этой причине малосимпатичен.
Но место быть имеет. | |
|
|
|
|
|
|
|
для: Trianon
(17.07.2009 в 18:03)
| | благодарю за развернутый ответ! | |
|
|
|