Задался таким вопросом.. Как лучше всего реализовать неограниченную вложенность?
Один из вариантов: http://bakler.org/blog/17 плюс-достаточно удобно. Минус-нельзя подсчитать кол-во записей в категории.. Точнее можно, но это будет очень мудельно. Может у кого получше вариант имеется?
Можно добавить ещё одно поле для количества и при добавлении записи в какую-то категорию пробегаться вверх по дереву и всем увеличивать это поле (или уменьшать при удалении).
14 Сен 2011, 11:21Тоже был такой вариант.. Но хотелось бы еще возможность вывода новых файлов) У самого есть одна идейка..но надеюсь что все же кто нибудь подскажет более лучший способ
14 Сен 2011, 11:28luethus, недодуманная, с использованием 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 />';
}
---
Как то так..
Ну если думать головой, то минусов нет, ибо подсчет организовать достаточно легко, как один из вариантов - это как в обычном подсчете вложенных файлов - директорий.. А можно и с дополнительным полем, как это организовано на phpbb
14 Сен 2011, 17:09http://internet-technologies.ru/articles/article_635.html