archakov06
@archakov06
Frontend-разработчик (ReactJS)

Как реализовать папки и подпапки на php?

В общем возникла такая трабла, что я не знаю как лучше реализовать папки и подпапки.

Я не буду вводить вас подробно в суть моего проекта, так как это очень долго :) Проще говоря, я делаю облачное хранилище. К примеру хочу реализовать папки и подпапки, как в Yandex.Disk или CloudMail.

+ Папка #1
----> Подпапка #1
----> Подпапка #2
+ Папка #2
----> Фотографии
----> Музыка


5665524.jpg5655284.jpg

В общем, я выбрал такой вариант реализации.

Таблица: categories
Столбцы:
id | user | catname | sub
1 | 1 | Папка #1 | 0
2 | 1 | Папка #2 | 0
3 | 1 | Подпапка #1 | 1
4 | 1 | Подпапка #2 | 1
5 | 1 | Фотографии | 2
6 | 1 | Музыка | 2


Смысл в том, что создается папка со значением sub = 0. Если это подпапка то в sub, указывается родительский id папки.

Далее простой запрос SELECT * FROM `categories` WHERE `user` = 1;

Потом вставляем все в массив и уже с самим массивом работаем.

Я не знаю, правильно ли я буду реализовывать данную идею. Если я где-то ошибся, хотелось бы, чтобы вы направили на правильное решение. Заранее спасибо!
  • Вопрос задан
  • 326 просмотров
Пригласить эксперта
Ответы на вопрос 4
valerium
@valerium
Изобретая велосипед
Когда я для своего безумного проекта искал способ организовать иерархическую структуру внутри реляционной базы данных, нашёл вот такую классную статью.
Ответ написан
breefix
@breefix
Технолог
Есть разные варианты хранения древовидных структур со своими плюсами и минусами, можете посмотреть презентацию: www.slideshare.net/billkarwin/models-for-hierarchi....
Ответ написан
laska
@laska
PHP/JS разработчик
У вас стандартное решение.
Отмечу, что некоторые БД (не MySQL) имеют синтаксис для работы с рекурсивными запросами из коробки. В случае MySQL часть логики придется переложить на PHP, но вы кажется с этим и так согласны.
Ответ написан
Я вот себе в закладки положил, и вам советую:

stackoverflow.com/questions/4048151/what-are-the-o...

Лучший известный мне список способов хранения иерархических данных в РСУБД.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы