我正在尝试使用MySQL表格将Breadcrumbs添加到我的网站,目前我遇到了困难。
我创建了一个名为'includes'的表,用于存储有关页面的类别,页面,子页面,标题和ref(url)的信息。类别,页面和子页面都是从用户所在页面传递的php参数
我的桌子布局如下:
|----------------------------------------------------------------|
| ID | Category | Page | Subpage | Title | Ref |
|----------------------------------------------------------------|
| 0 | | | | Home | ... |
| 1 | Software | | | Software | ... |
| 2 | Software | Desktop | | Desktop Software | ... |
| 3 | Software | Mobile | | Mobile Software | ... |
| 4 | Software | Desktop | Blah | Blah Blah | ... |
| ...
|----------------------------------------------------------------|
我要做的是创建一个查询,只返回所需的步骤返回到主页以获取面包屑。
换句话说,如果用户在“example.com/software/desktop/blah”上,查询将返回第0,1,2和4行。或者,如果我在/ software / mobile,它会只返回行0,1和3。
我目前的尝试包括以下内容:
SELECT * FROM `includes` WHERE
`category` IS NULL AND `page` IS NULL AND `subpage` IS NULL OR
`category`='$category' AND `page` IS NULL AND `subpage` IS NULL OR
`category`='$category' AND `page`='$page' AND `subpage` IS NULL OR
`category`='$category' AND `page`='$page' AND `subpage`='$subpage'
这不仅不起作用,而且看起来也应该比它应该更复杂。
我可能过于复杂,或者可能只是做了一个完全错误的方法,这就是我转向这里的原因。
有没有人可以解决这个问题?我应该查看更复杂的查询吗? (诚然,SQL不是我的强项)或者我应该查看新的SQL表,还是可能是一个完全不同的方法?
答案 0 :(得分:2)
您拥有的是层次结构。数据设置为父子关系。有关如何使用分层数据的详细说明:http://explainextended.com/2009/03/17/hierarchical-queries-in-mysql/
答案 1 :(得分:1)
您可以制作一个self relation
这样的表
id | parent_it | title | Ref
1 | 0 | Home | ...
2 | 1 | Software | ...
3 | 2 | Desktop | ...
4 | 2 | Mobile | ...
5 | 3 | Blah | ...
所以你的查询应该得到最后一个元素
SELECT * FROM includes
WHERE
tilte
='Blah'
然后获取父ID标题,依此类推,从我的观点来看,表结构会更好。经验
或
根据您获得的值生成查询,使用简单的循环计数参数并基于该参数生成查询字符串然后执行它
我希望这可以帮助:)