ФорумПрограммированиеPHP для идиотов → Комментарии деревцем

Комментарии деревцем

  • Patrick

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 17 июля 2008 г. 1:35, спустя 14 минут 38 секунд

    т.е. упираемся в ограничение — 999 :)
    да.всё верно
    1,2 и т.д. это что? это id родительских комментов?
    да родители, последний ствой
  • Z-MODe

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 30 марта 2009 г. 6:52, спустя 256 дней 5 часов 17 минут

    А для мну это актуально..
    Я в программировании слабоват, поэтому тупо не понимаю, как правильно зациклиться на вывод потомков.. вааще не понимаю..
    т.е. допустим я извлёк родителя, дальше я извлекаю детей, и вот как зациклить извлечение детей я не знаю( чтобы цикл шёл ниже ниже до бесконечности)
    Очень помощь надо, второй день голову ломаю(
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 30 марта 2009 г. 7:04, спустя 11 минут 26 секунд

    Z-MODe, это называется рекурсия
    adw/0
  • Z-MODe

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 30 марта 2009 г. 7:10, спустя 6 минут 51 секунду

    угумс) у мну толи ступор, толи не выспался, я сам догнать не могу, как эту рекурсию организовать… прям блять пинка под жопу не хватает(((
  • AlexB

    Сообщения: 4288 Репутация: N Группа: в ухо

    Spritz 30 марта 2009 г. 7:12, спустя 1 минуту 49 секунд

    Z-MODe, пишешь функцию, которая на вход принимает id родителя.
    Функция извлекает потомков, если их нет делает ретурн, если есть для каждого потомка достает id и запускает себя еще раз с извлеченным id.
    Это и называется тем мудреным словом, которое сказал Эдворд. ))))
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 30 марта 2009 г. 7:15, спустя 2 минуты 44 секунды


    function rec(pid) {
    rec(id);
    }
    adw/0
  • Z-MODe

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 30 марта 2009 г. 7:33, спустя 17 минут 39 секунд

    function getChilds($parentId) {

    $childs = = DB::getRecords('*','comments',"parent_id = '$parrentId'",'date'); //вернёт массив, с комментами.
    if (!$childs) return false;
    else

    // а тут я не знаю уже чё куда и как это в массив всё записывать под нужного ребёнка( форич, фор -непонятно вообщем(

    }


  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 30 марта 2009 г. 7:36, спустя 3 минуты 1 секунду


    function getChilds($parentId) {

    $childs = = DB::getRecords('*','comments',"parent_id = '$parrentId'",'date'); //вернёт массив, с комментами.
    if (!$childs) return false;
    else

    // а тут я не знаю уже чё куда и как это в массив всё записывать под нужного ребёнка( форич, фор -непонятно вообщем(

    }





    function getChilds($parentId) {

    $childs = DB::getRecords('*', 'comments', "parent_id = '$parrentId'", 'date');

    if (!$childs) {

    return false;

    } else {

    //перебираешь массив и в getChilds() передаешь иды… что непонятного?
    foreach($childs as $V) {
    getChilds($V['id']);
    }

    }
    }
    adw/0
  • Z-MODe

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 30 марта 2009 г. 7:43, спустя 7 минут 34 секунды

    у мну просто в голове щас каша, я по сути это всё знаю, у мну это всё написано, я теперь не могу догнать как мне это в массив засовывать допустим ну или сразу лучше выводить(((

    $comment[$level_1][$level_2][$level_3][$level_4] и т.д. как правильно собрать всю иерархию в массив?
  • AlexB

    Сообщения: 4288 Репутация: N Группа: в ухо

    Spritz 30 марта 2009 г. 8:13, спустя 29 минут 35 секунд

    Ну засовывать в массив все в той же функции … в чем конкретно проблема? И вообще, что тебе даст массив?

    А как перебрать и вывести все показали …
  • Z-MODe

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 30 марта 2009 г. 8:19, спустя 5 минут 58 секунд


    function getChilds($parentId) {

    $childs = DB::getRecords('*', 'comments', "parent_id = '$parrentId'", 'date');

    if (!$childs) {

    return false;

    } else {

    //перебираешь массив и в getChilds() передаешь иды… что непонятного?
    foreach($childs as $V) {
    $subChilds[] = getChilds($V['id']); //вот как мне правильно в массив засунуть в один и тот же.. с трудом представляю просто
    }

    }
    }
  • phpdude

    Сообщения: 26618 Репутация: N Группа: в ухо

    Spritz 30 марта 2009 г. 8:31, спустя 12 минут 21 секунду

    у меня есть классец для работы с деревом комменариев …. адский классец. но не гонял на больших объемах, теоретически должен отрабатывать за 0 на любых объемах. метод хранения - адаптированный нестед сетс. адаптированный - потому что для обновления таблицы он обновляет ТОЛЬКО ВЕТКУ КОММЕНТАРИЕВ К ОПРЕДЕЛЕННОМУ ТОПИКУ, а не всю таблицу + многокорневой нестед.

    селектов в нем порядка 5 штук на выборки потомков и тп и они все по ндексам + уникальным индексам.

    вопрос расшарить ли это …. …
    Сапожник без сапог
  • AlexB

    Сообщения: 4288 Репутация: N Группа: в ухо

    Spritz 30 марта 2009 г. 8:34, спустя 2 минуты 42 секунды

    Z-MODe, ссылку на ту область массива куда сувать пересылай вместе в вызовом функции.
    Но ты так и не ответил на вопрос. Зачем тебе массив?
  • Z-MODe

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 30 марта 2009 г. 8:45, спустя 11 минут 34 секунды

    Да я вот тоже уже задаюсь вопросом зачем.. буду сразу выводить)
    Впринципе. чё думал, так и есть, только в одно место всё собрал)))
  • mario

    Сообщения: ? Репутация: N Группа: Джедаи

    Spritz 30 марта 2009 г. 9:29, спустя 43 минуты 22 секунды

    phpdude, если можно, то да, будет интересно посматреть, поучиться :)

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