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

Форум MySQL

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

 

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

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

тема: Древовидность комментариев (вывод из базы).
 
 автор: lElectroHardl   (11.09.2010 в 17:42)   письмо автору
 
 

Есть таблица comments:
id (int)
id_parrent (int)
post (int)
author (varchar)
text (varchar)

Если выводить комменты и их ответы в цикле, то выводятся они либо отсортированы по дате, либо по id, либо по id_parent. - все это не то (так нельзя ответить на ответ, после которого идет простой комментарий, т.к. он будет расположен уже в другом комментарии)

А как мне сделать, что бы они выводились как в дереве? Примерно ТАК.
Что бы они не были отсортированы по комментарий--ответ.

  Ответить  
 
 автор: Trianon   (11.09.2010 в 18:21)   письмо автору
 
   для: lElectroHardl   (11.09.2010 в 17:42)
 

читайте про организацию древовидных структур в базах данных

тем методом, которым Вы представляете деревья, организовать вывод за один запрос к БД, упорядоченный средствами самой БД, невозможно.
Либо nested sets
Либо сортировка на уровне приложения.

  Ответить  
 
 автор: lElectroHardl   (11.09.2010 в 18:30)   письмо автору
 
   для: Trianon   (11.09.2010 в 18:21)
 

А если изменить структуру базы?
Возможно перед id_perent поставить поле для родительского комментария, а id_parent - будет дочерние комментарии. Или лучше по-другому?

  Ответить  
 
 автор: Trianon   (11.09.2010 в 18:35)   письмо автору
 
   для: lElectroHardl   (11.09.2010 в 18:30)
 

Adjacency lists
Nested sets
марш в гугл, а лучше в яндекс.
Впрочем, можете по этим ключам и здесь поискать - все равно выйдете одинаково.

  Ответить  
 
 автор: lElectroHardl   (11.09.2010 в 22:10)   письмо автору
 
   для: Trianon   (11.09.2010 в 18:35)
 

А можно ли другим путем пойти? Создать связующую таблицу или еще что-то? А то почитав мануалы по тем 2-м вариантам понял, что нечего не понял.

  Ответить  
 
 автор: Trianon   (11.09.2010 в 22:14)   письмо автору
 
   для: lElectroHardl   (11.09.2010 в 22:10)
 

каким путем ни ходи - понять придется.

  Ответить  
 
 автор: lElectroHardl   (11.09.2010 в 22:22)   письмо автору
 
   для: Trianon   (11.09.2010 в 22:14)
 

Вы можете кратко объяснить, как организовать таблицу, для древовидного вывода? А то я не понимаю.

  Ответить  
 
 автор: Trianon   (11.09.2010 в 23:36)   письмо автору
 
   для: lElectroHardl   (11.09.2010 в 22:22)
 

Могу.
Nested Sets.

  Ответить  
 
 автор: lElectroHardl   (12.09.2010 в 21:28)   письмо автору
 
   для: Trianon   (11.09.2010 в 23:36)
 

А можно все же через id_parent? А то все другие навороты это для меня очень сложно.
Если делать структуру:

id
id_parent
post
...

То нельзя добавить ответы к тем комментариям, после которых написан просто комментарий:
комментарий 1
--ответ 1
----ответ 2
------ответ 3
комментарий 2
--ответ 1

Т,е. на комментарий 1 ответ дать уже нельзя (или я глубоко ошибаюсь?)

Вот если можно было бы обойтись без Nested Sets, было просто замечательно! Возможна переструктурирование базы.

  Ответить  
 
 автор: lElectroHardl   (13.09.2010 в 18:26)   письмо автору
 
   для: lElectroHardl   (12.09.2010 в 21:28)
 

Немного симпровизировав, решил задачу.

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

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