2013-03-09 71 views
1

我正在嘗試使用MySQL表添加麪包屑到我的網站,而此刻我很困難。抓取MySQL中的單個元素表

我有一個名爲'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表,或者可能是一個完全不同的方法?

+1

你組織這個表的想法是錯誤的。您需要創建一個分層表,使用上級條目標識作爲下級條目的父級標識 – 2013-03-09 07:20:36

回答

1

您可以作出這樣

id | parent_it | title | Ref 

1 | 0   | Home | ... 
2 | 1   | Software | ... 
3 | 2   | Desktop | ... 
4 | 2   | Mobile | ... 
5 | 3   | Blah | ... 

一個self relation表,以便您的查詢應該得到的最後一個元素 SELECT * FROM includes WHERE tilte ='Blah'

然後得到父母的ID標題等等,就像這個表格結構會更好從我的角度來看&體驗

OR

基於你的價值觀,用簡單的循環計數的參數,並基於該生成查詢的查詢字符串,然後執行它

我希望這能幫助:)

+0

這實際上很有意義。 我還是MySQL的新手,所以我甚至都沒有想過這種方式;我會盡力實現這一點。 有什麼辦法可以做出一個可以返回所有父ID的查詢,或者這是一系列查詢嗎? – Bitwize 2013-03-09 07:46:11