ФорумПрограммированиеПыхнуть хотите?Battles → TreeStructure

TreeStructure

  • Абырвалг

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

    Spritz 15 апреля 2010 г. 22:00

    Предлагаю батл.

    Класс для работы с деревьями со множествами драйверов: AL, MP, NS, RAL (как MP, только отдельная таблица)
  • phpdude

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

    Spritz 15 апреля 2010 г. 22:04, спустя 3 минуты 55 секунд


    Предлагаю батл.

    Класс для работы с деревьями со множествами драйверов: AL, MP, NS, RAL (как MP, только отдельная таблица)
    нахуй? :)
    Сапожник без сапог
  • Абырвалг

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

    Spritz 15 апреля 2010 г. 22:11, спустя 6 минут 44 секунды

    актуальная тема. Мне б в BL такой класс захуярить.

    Я не могу придумать удобного доступа к нему, написать-то можно.

    $options = array(/* таблица, с которой работаем, названия полей, отвечающих за хранение структуры, тип модели*/);
    $leaf = new TreeStructure_Node();
    $tree = new TreeStructure($options);
    $tree->appendNode($node, 4); // присоединяем новый элементик к id=4
    $tree->getAllParents(6);
    $tree->changeParent(new TreeStructure_Node(10), new TreeStructure_Node(4));
    $tree->hasChilds(43);
    $tree->removeRecursive(1);
  • phpdude

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

    Spritz 15 апреля 2010 г. 22:22, спустя 11 минут

    хочу заметить, что remove - всегда рекурсиве))

    $tree->removeRecursive(1);

    по крайней мере в дереве
    Сапожник без сапог
  • Абырвалг

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

    Spritz 15 апреля 2010 г. 22:25, спустя 3 минуты

    да, проебал
    Спустя 32 сек.
    а еще конвертеры структур можно сделать)
  • phpdude

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

    Spritz 15 апреля 2010 г. 22:33, спустя 8 минут 44 секунды


    да, проебал
    Спустя 32 сек.
    а еще конвертеры структур можно сделать)
    а еще можно делом заняться
    Сапожник без сапог
  • Абырвалг

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

    Spritz 15 апреля 2010 г. 23:19, спустя 45 минут 14 секунд

    class BL_TreeStructure_Driver_RedundantAdjacencyList extends BL_TreeStructure_DriverAbstract implements BL_TreeStructure_DriverInterface
    Спустя 35 сек.
    900!!!
  • Nyaah

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

    Spritz 16 апреля 2010 г. 1:02, спустя 1 час 43 минуты 40 секунд

    Если е делать нечего, реализуй фиббаначеву кучу на пхп =)
    Work, buy, consume, die
  • Абырвалг

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

    Spritz 16 апреля 2010 г. 1:18, спустя 15 минут 37 секунд

    чего вы чуть что сразу "делать нечего"? У меня древовидная структура в контенте и в разделах новостей
  • artoodetoo

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

    Spritz 16 апреля 2010 г. 6:08, спустя 4 часа 49 минут 57 секунд

    на интерес можно. сколько денег поставишь?
    ιιlllιlllι унц-унц
  • Абырвалг

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

    Spritz 16 апреля 2010 г. 11:39, спустя 5 часов 31 минуту 36 секунд

    о, я не в курсе, что на батлах можно платить и получать деньги. Ну тыщенки 2 ЯД.
    Я, кстати пишу уже, если че. Заказчик не ждет
  • artoodetoo

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

    Spritz 16 апреля 2010 г. 12:34, спустя 54 минуты 11 секунд

    а кто нам запретит? )))
    срок?
    я так понял, что аббревиатура RAL не особо распостранена, так что я ее точно не буду делать :) мало ли кто чего придумал
    ιιlllιlllι унц-унц
  • Абырвалг

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

    Spritz 17 апреля 2010 г. 1:15, спустя 12 часов 40 минут 55 секунд

    я как раз RAL делаю. На нем наверно и остановлюсь, на остальные нет времени, хотя задумка хорошая.

    Задачка очень специфическая, во-первых мне необходимо поле sorder, что бы можно было поднимать и опускать ветки в пределах одного родителя.
    Во-вторых при выборке нужно задавать уровень поиска вниз и вверх.
    В-третьих, самое сложное (в плане интерфейса) нужно джоинить пару-тройку таблиц при выборке.

    	public function remove($nodeId)
    {
    $nodes = $this->db->getColumn("
    SELECT DISTINCT id
    FROM :$this->structure
    WHERE parent_id=?i", $nodeId);

    $nodes[] = $nodeId;
    $idsStr = implode(',', $nodes);

    $this->db->query("DELETE FROM :$this->table WHERE id IN (" . $idsStr . ")");
    $this->db->query("DELETE FROM :$this->structure WHERE id IN (" . $idsStr . ")");

    return $nodes;
    }

    норм? тормозить не будет?
  • Faster

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

    Spritz 17 апреля 2010 г. 11:19, спустя 10 часов 4 минуты 9 секунд

    при удалении фигня
    покажи выборку

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