За последние 24 часа нас посетили 62154 программиста и 1681 робот. Сейчас ищут 1298 программистов ...

Постраничная навигация в древовидных комментариях - как?

Тема в разделе "PHP для новичков", создана пользователем ALEXU, 11 апр 2012.

  1. ALEXU

    ALEXU Активный пользователь

    С нами с:
    5 апр 2011
    Сообщения:
    79
    Симпатии:
    0
    Адрес:
    Russia
    Доброго времени суток!
    Собственно по заголовку понятно.

    Есть древовидные комменты. Нужно сделать там постраничку, естественно, считая только комменты первого уровнять. Т.е. те, которые имеют parent_id 0, скажем так.

    Но вот как это делается, да же примерно не могу представить.
    Т.е. чтобы выставил 10 комментов на странице и выводится 10 с parent_id = 0 и к ним уже ответы.
     
  2. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    ну...при выборке из базы делать что-то типа WHERE parent_id=0 LIMIT 10, и тут некое смещение.
     
  3. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    select (здесь текст запроса на выбор комментариев) where (условие выбора) and id in (select id from comments where parent_id = 0 limit (нужный лимит и смещение))
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я б двумя запросами сделал =)
    я неправильный. я вобще отказался от вложенных селектов.
     
  5. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    А разница? При нормальной оптимизации внутри БД сервера это и будет 2 запроса.
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    да практически без разницы. если бы не нюанс: когда есть LIMIT m,n, с разбитием на отдельные запросы можно (при умелых руках) уменьшить количество бесполезно перебираемых данных
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я с некоторых пор не очень доверяю мускульному оптимизатору...
     
  8. ALEXU

    ALEXU Активный пользователь

    С нами с:
    5 апр 2011
    Сообщения:
    79
    Симпатии:
    0
    Адрес:
    Russia
    Ребят, что-то не получается.
    Может не правильно что-то сделал?

    Код (Text):
    1. SELECT
    2.     c.rating, c.id, c.user_name, c.date_added, c.read, c.parent_id, cd.text
    3. FROM
    4.     com c, com_desc cd
    5. WHERE  
    6.     c.news_id = '".$news_id."' AND
    7.     c.id = cd.id AND
    8.     cd.lang = '".$lang."' AND
    9.     c.id IN (SELECT id FROM com WHERE parent_id = '0')
    10. ORDER BY
    11.     c.id ASC
    LIMIT у меня постраничка устанавливаем сама у себя в классе

    Выводит только первый уровень и все
     
  9. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    1) Это запрос не на дерево, а на указанные узлы дерева.
    2) Как хранится дерево? Если Adjacency List, то боюсь это гиблое дело. Если по другому, то можно думать дальше.
    3) Действительно. Давно я что-то не выращивал деревьев.