Jump to content
  • 0

Древовидная структура комментарием


vvsh
 Share

Question

23 answers to this question

Recommended Posts

  • 0

а нафига - смотри делаешь выборку из базы постов id, parent, user, text ,...

после этого рекурсивно проходишь посты делая div-вложенность, или прибавляя-убавляя левый маргин и всего-то

Link to comment
Share on other sites

  • 0
А, пардон. Если обработка в PHP, а сами данные в базе — тогда понятно. Я почему-то решил было, что "чистый PHP" — это вообще без базы :)

"писать и какать в костью, фииии как неприлично" (С)Лукяненко "Лабиринт Отражений"

Link to comment
Share on other sites

  • 0

@Иван Шумов, у меня вопрос: можно одним SQL запросом сделать древовидную выборку по id, prent? Просто знаю, что в simpleDb (dklab) можно это делать... Я думаю они просто упростили, или все же по результату пускают рекурсивную функцию? И хотелось бы, но смею ли просить :), посмотреть на древовидные комменты на чистом SQL.

По делу (возможно бредовенькая идея):

Можно добавить поле level, формой передавать какой левел был у комментария, на который отправлен ответ.

После делать выборку с сортировкой по дате(для пущей уверенности).

Но мне больше нравиться с рекурсией конечно. Идея, которую привел, В общем то, в качестве альтернативы...

Link to comment
Share on other sites

  • 0
@Иван Шумов, у меня вопрос: можно одним SQL запросом сделать древовидную выборку по id, prent? Просто знаю, что в simpleDb (dklab) можно это делать... Я думаю они просто упростили, или все же по результату пускают рекурсивную функцию? И хотелось бы, но смею ли просить :) , посмотреть на древовидные комменты на чистом SQL.

По делу (возможно бредовенькая идея):

Можно добавить поле level, формой передавать какой левел был у комментария, на который отправлен ответ.

После делать выборку с сортировкой по дате(для пущей уверенности).

Но мне больше нравиться с рекурсией конечно. Идея, которую привел, В общем то, в качестве альтернативы...

не поверишь - да, реально, но там запросик такой... на пол страницы (: это раз, во-вторых он тормозит на стандартной сборке (лучше свой сервер) и level - эго лучше рекурсией или версткой считать, иначе хреново будет

Link to comment
Share on other sites

  • 0

Подозреваю, что имелось в виду что-то вроде этого (судя по упоминанию Котерова, вот соотв. обсуждение на его форуме:). Кстати, не так уж оно тормозит. Но формат вывода получается не слишком удобный...

Вообще про деревья неплохая подборка на PHPclub'е.

Link to comment
Share on other sites

  • 0
Подозреваю, что имелось в виду что-то вроде этого

нет, нифига не это. Я конечно не принижаю заслуги Котерова - он отличный программист, просто я сказал про свой сервак не просто - требуется хранимая процедура в MySQL, на инфобоксе лично так и не получилось создать фиг знает по какой причине

Link to comment
Share on other sites

  • 0

Понятно. Я опять зациклился на старом стереотипе "все одним запросом" (тут, по-моему, действительно или Nested Sets, или вышеприведенное монстро:). С хранимками-то вариантов, конечно, побольше будет (хотя от рекурсии в том или ином виде все равно особо не уйти).

А у инфобокса, похоже, и впрямь политика такая странная...

Link to comment
Share on other sites

  • 0
Понятно. Я опять зациклился на старом стереотипе "все одним запросом"

ну запросом обычным это не сделать - я пока считаю что невозможно использовать рекурсию в обычном пользовательском запросе, а если рассматривать хранимую процедуру как запрос - то это один запрос :)

Link to comment
Share on other sites

  • 0
невозможно использовать рекурсию в обычном пользовательском запросе
А как же пример Котерова из моего поста выше, с многократным join-ом таблицы с ней же самой? ;) Хотя не спорю, работать с результатом такого запроса действительно неудобно, так что практическая ценность этого решения невелика.
Link to comment
Share on other sites

  • 0
А как же пример Котерова из моего поста выше, с многократным join-ом таблицы с ней же самой? :) Хотя не спорю, работать с результатом такого запроса действительно неудобно, так что практическая ценность этого решения невелика.

не путай LEFT JOIN и рекурсию - 2 разные вещи :)

Link to comment
Share on other sites

  • 0
а нафига - смотри делаешь выборку из базы постов id, parent, user, text ,...

после этого рекурсивно проходишь посты делая div-вложенность, или прибавляя-убавляя левый маргин и всего-то

Изначально такой задачи не ставилось, но обычно подразумевается, что сообщения еще разбиваются на страницы.

Так что всего-то осталось еще реализовать разбиение на страницы, например по 10 parent сообщений на странице.

Но при этом к каждому parent сообщению - все ответы на него :)

Это все не сложно, только морально угнетает необходимость выбирать из базы сразу ВСЕ сообщения, а не LIMIT 0,10 )

Link to comment
Share on other sites

  • 0
Изначально такой задачи не ставилось, но обычно подразумевается, что сообщения еще разбиваются на страницы.

Так что всего-то осталось еще реализовать разбиение на страницы, например по 10 parent сообщений на странице.

Но при этом к каждому parent сообщению - все ответы на него :)

Это все не сложно, только морально угнетает необходимость выбирать из базы сразу ВСЕ сообщения, а не LIMIT 0,10 )

ну, доо, придрался к словам :P я-то это понимаю, только мне слишком лениво было это дописывать :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy