обясните пожалуйста ,какая структура базы будет,если сделать,типо ,чтобы 1 файл мог быть в нескольких категориях?чтото я не помню как такое сделать
28 Фев 2013, 0:36Это подобно тегам.
Не нужно в записи с файлов указывать ID категории.
Просто указывай теги, например вот так {картинки}{юмор}
И допустим вошёл ты в категорию "Картинки"
Поиск по файлам делай так:
SELECT * FROM files WHERE tag LIKE '%\{картинки\}%';
jasis пишет:
"Виктор, это не удобно и не практично"
Удобно и практично. Или ты предпочитаешь дублировать записи в таблицах?
Ещё подобный вариант, указывать иды категорий в записи. Например {1}{2}{100}, а при отображении файлов в категории использовать запрос
SELECT * FROM files WHERE cats LIKE '%\{$cat_id\}%' ORDER BY data DESC LIMIT 0, 10;
Выведет последние 10 добавленных файлов в каталоге с идом $cat_id
Почему не удобно? Вполне удобно, да и практично. Я пока не вижу других решений.
Ну хотя можно в записи каталога создать ячейку в которой будут указаны все иды файлов находящиеся в этой категории.
Например 1,2,3,4
Запрос будет такой:
$files='1,2,3,4';
SELECT * FROM files WHERE id IN ($files);
Вот это называется не удобно и не практично
Виктор, я не люблю использовать вообще like в запросах не хорошая это штука
добавлено спустя 1 минуту:
Виктор, если не найду других решений,то попробую твои воспользоватся,сколько перелазил в поисковике,ничего не нашол нормального и понятного... хотя когдато находил именно ответ на мой вопрос с хорошим решением
Виктор, дублировать лучше, чем like использовать
добавлено спустя 52 секунды:
jasis, пиши просто несколько записей для одного файла
Виктор пишет:
"Это подобно тегам.
Не нужно в записи с файлов указывать ID категории.
Просто указывай теги, например вот так {картинки}{юмор}
И допустим вошёл ты в категорию "Картинки"
Поиск по файлам делай так:
SELECT * FROM files WHERE tag LIKE '%\{картинки\}%';"
