Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: комментарии к чему-либо
 
 автор: sponge   (17.07.2009 в 04:09)   письмо автору
 
 

Как обычно на php+mysql реализуются комментарии к статьям, форумы и прочее?
Если представить, что есть таблица id комментария, id родителя, [имя пользователя, текст и прочая информация]. Каким образом дальше обрабатывается всё это и выводится дерево, например как в комментариях на этом форуме.
Перелопатил кучу сайтов, информации минимум. Несколько совсем элементарных способов с рекурсивным вызовов БД.
Хочется сделать всё красиво и по максимум современно=)
Надеюсь на вашу помощь!

  Ответить  
 
 автор: Trianon   (17.07.2009 в 08:47)   письмо автору
 
   для: sponge   (17.07.2009 в 04:09)
 

>Несколько совсем элементарных способов с рекурсивным вызовов БД.

Которые не устраивают чем?

  Ответить  
 
 автор: psychomc   (17.07.2009 в 10:06)   письмо автору
 
   для: sponge   (17.07.2009 в 04:09)
 

>Хочется сделать всё красиво и по максимум современно
для этого добавьте к элементарным способам javascript

  Ответить  
 
 автор: sim5   (17.07.2009 в 10:13)   письмо автору
 
   для: psychomc   (17.07.2009 в 10:06)
 

А он тут каким боком?

  Ответить  
 
 автор: psychomc   (17.07.2009 в 11:44)   письмо автору
 
   для: sim5   (17.07.2009 в 10:13)
 

а разве красота и современность это не клиентская часть?

  Ответить  
 
 автор: sim5   (17.07.2009 в 11:48)   письмо автору
 
   для: psychomc   (17.07.2009 в 11:44)
 

А разве вывести "лесенкой" комментарии, это прерогатива JS?

  Ответить  
 
 автор: psychomc   (17.07.2009 в 12:04)   письмо автору
 
   для: sim5   (17.07.2009 в 11:48)
 

я думаю, что автор, когда писал про современность, не имел ввиду просто вывести комментарии лесенкой (мб я ошибаюсь)...

  Ответить  
 
 автор: Loki   (17.07.2009 в 13:07)   письмо автору
 
   для: psychomc   (17.07.2009 в 12:04)
 

Забавный виток совершила история: первые форумы были древовидные, а первые комментарии - линейные... постепенно в моду стали входить линейные форумы и древовидные комментарии...
Теперь уже редко встретишь древовидный форум:)

  Ответить  
 
 автор: Trianon   (17.07.2009 в 13:14)   письмо автору
 
   для: Loki   (17.07.2009 в 13:07)
 

Это всё девелореры напридумывают невесть чего, а нам, посетителям, потом мучайся и привыкай...
:)

  Ответить  
 
 автор: Trianon   (17.07.2009 в 10:48)   письмо автору
 
   для: psychomc   (17.07.2009 в 10:06)
 

>>Хочется сделать всё красиво и по максимум современно
>для этого добавьте к элементарным способам javascript

а сверху повяжите бантик.

  Ответить  
 
 автор: psychomc   (17.07.2009 в 11:42)   письмо автору
 
   для: Trianon   (17.07.2009 в 10:48)
 

тип того

  Ответить  
 
 автор: sponge   (17.07.2009 в 17:23)   письмо автору
 
   для: psychomc   (17.07.2009 в 11:42)
 

спасибо всем за спам =)
а если можно по существу..
пока реализовал дерево вот таким боком: http://www.php.su/articles/?cat=phpdb&page=004
посоветовали делать выборку с использованием хранимых процедур, но оказалось у хостера mysql 4.1.

есть id коммента - id родителя. как дальше выбрать данные из базы, чтобы получилось как на этом форуме? без всяких доп полей типа sortorder (см ссылку выше).
вот в чем был вопрос.. а красиво - значит современно, например с использованием тех же хранимых процедур

  Ответить  
 
 автор: Trianon   (17.07.2009 в 17:35)   письмо автору
 
   для: sponge   (17.07.2009 в 17:23)
 

>спасибо всем за спам =)
>а если можно по существу..

А если по существу, то я задал Вам вопрос. По существу. А Вы на него не ответили.

  Ответить  
 
 автор: sponge   (17.07.2009 в 17:38)   письмо автору
 
   для: Trianon   (17.07.2009 в 17:35)
 

Ну тут аналогия с Петей и волками=) Не разглядел зерна во всем флуде.

А тем плох вариант с рекурсивными запросами, что запросом слишком много выходит. Когда можно сделать все в один.

  Ответить  
 
 автор: Trianon   (17.07.2009 в 17:44)   письмо автору
 
   для: sponge   (17.07.2009 в 17:38)
 

Можно обойтись одним запросом, затянув всё дерево в массив.
А потом уже вести рекурсию. Не трогая сервер.
Собственно, текущая версия форума, как я понимаю, так и делает.

Можно также применить методику nested sets для хранения дерева.
Если дерево подвергается изменениям нечасто - более чем достойный вариант.

  Ответить  
 
 автор: sponge   (17.07.2009 в 17:53)   письмо автору
 
   для: 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

  Ответить  
 
 автор: Trianon   (17.07.2009 в 18:03)   письмо автору
 
   для: sponge   (17.07.2009 в 17:53)
 

есть три базовые методики: adjacency list, nested sets и matherialized paths.
Вы описываете третий. он обладает рядом количественных ограничений и лично мне по этой причине малосимпатичен.
Но место быть имеет.

  Ответить  
 
 автор: sponge   (17.07.2009 в 18:11)   письмо автору
 
   для: Trianon   (17.07.2009 в 18:03)
 

благодарю за развернутый ответ!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования