Xwab
Форумыnavigate_nextПрограммирование на PHP

Неограниченная вложенность
Сообщения
aBSuRD

Задался таким вопросом.. Как лучше всего реализовать неограниченную вложенность?
Один из вариантов: http://bakler.org/blog/17 плюс-достаточно удобно. Минус-нельзя подсчитать кол-во записей в категории.. Точнее можно, но это будет очень мудельно. Может у кого получше вариант имеется?

14 Сен 2011, 11:16
luethus

Можно добавить ещё одно поле для количества и при добавлении записи в какую-то категорию пробегаться вверх по дереву и всем увеличивать это поле (или уменьшать при удалении).

14 Сен 2011, 11:21
aBSuRD

Тоже был такой вариант.. Но хотелось бы еще возможность вывода новых файлов) У самого есть одна идейка..но надеюсь что все же кто нибудь подскажет более лучший способ

14 Сен 2011, 11:28
luethus

aBSuRD, что за идейка?

14 Сен 2011, 12:32
aBSuRD

luethus, недодуманная, с использованием LIKE. Для з.ц.
Таблица dirs:
id | name | count_dirs (кол-во папок) | count_files (кол-во файлов) | path
Таблица files:
id | name | ....... | data (дата добавления файла) | path
path-полный путь к папке, в которой находится текущий файл/папка.
Например мы сейчас просматриваем папку dir1/dir2/dir3, ссылка будет вида: dir.php?dir=dir1/dir2/dir3
---
$dir=$_GET['dir']; //текущая папка
$query=mysql_query('select * from `dirs` where `path`='.$dir); //получаем список папок, находящихся в папке $dir
while($res=mysql_fetch_assoc($query)) {
echo '<a href="dir.php?dir=',$dir,'/',$res['name'],'">',$res['name'],'</a> [Папок: ',$res['count_dirs'],', Файлов: ',$res['count_files'],' + ',mysql_result(mysql_query('select count(*) from `files` where `path` LIKE "'.$dir.'/'.$res['name'].'%" and `data`>'.$data),0),' новых]<br />';
}
---
Как то так..

14 Сен 2011, 13:22
Dezer

Ну если думать головой, то минусов нет, ибо подсчет организовать достаточно легко, как один из вариантов - это как в обычном подсчете вложенных файлов - директорий.. А можно и с дополнительным полем, как это организовано на phpbb

14 Сен 2011, 17:09
aBSuRD

Dezer, хотелось бы еще варианты увидеть..

15 Сен 2011, 11:02
manyrus

http://internet-technologies.ru/articles/article_635.html


__________
посл.ред. 15 Сен 2011, 11:29; всего 1 раз 15 Сен 2011, 11:29
Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.