抓取MySQL表中的各个元素

时间:2013-03-09 07:16:49

标签: php mysql database breadcrumbs

我正在尝试使用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表,还是可能是一个完全不同的方法?

2 个答案:

答案 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标题,依此类推,从我的观点来看,表结构会更好。经验

根据您获得的值生成查询,使用简单的循环计数参数并基于该参数生成查询字符串然后执行它

我希望这可以帮助:)