【发布时间】:2015-08-03 09:36:24
【问题描述】:
我正在想办法为我的媒体数据库制作一个搜索引擎。
虚拟文件夹的结构是:
表目录
id name parent
媒体的结构是:
表格媒体
id name parent
我正在使用以下 php 函数来列出我的所有目录
function print_menu($id = 0) {
$sql = "SELECT directories.id AS id, directories.name AS name, directories.parent AS parent, directories.icon AS icon FROM directories
WHERE directories.parent = '".$id."' GROUP BY directories.id ORDER BY directories.name ASC";
$req = $cnx->prepare($sql);
$req->execute();
if ($req->rowCount()>0) {
echo "<ul>";
while ($data=$req->fetch()) {
echo "<li>".$data['name']."</li>";
print_menu($data['id']);
}
echo "</ul>";
}
}
现在假设我有以下文件夹
- 根
- 项目1
- 目录 1
- 子目录 1
- 子目录 2
- 子目录 3
- 目录 2
- 子目录 1
- 目录 3
- 子目录 1
- 子目录 2
- 目录 1
- 项目2
- 目录 1
- 子目录 1
- 子目录 2
- 目录 2
- 子目录 1
- 子目录 2
- 子目录 3
- 目录 3
- 子目录 1
- 目录 1
- 项目3
- 目录 1
- 子目录 1
- 目录 2
- 子目录 1
- 目录 3
- 子目录 1
- 目录 1
- 项目1
我想在“项目 1”中搜索名为“%media_1%”的媒体,包括其所有子文件夹,如何在不查询每个文件夹和子文件夹的情况下做到这一点?子文件夹的级别可能会有所不同。
【问题讨论】:
-
除非您知道最大深度,否则我不确定没有不同的表结构是否可行。
-
那是我的恐惧,你知道表结构会做什么吗?考虑到我需要一些动态的东西(移动文件夹,重命名它们等等......)
-
如何以最大深度做到这一点?每个级别的连接?
-
是的,每个级别的连接,包括前面的级别,我会在几分钟内以答案形式举例说明
标签: php mysql search directory subdirectory