2013-03-21 87 views
0

我有MySQL數據庫記錄: POST_ID INT,POST_TITLE文本,POST_DATE時間戳(默認值CURRENT_TIMESTAMP)生成網站地圖由CURRENT_TIMESTAMP

如何使用PHP與以下結構沒有空我生成網站地圖在結果日期節點(其中職位是隻從數據庫),例如:

2010 
- 2010 Jan 
-- 2010 Jan 10 
--- post-1 
--- post-2 
-- 2010 Jan 12 
--- post-3 
-- 2010 Jan 17 
--- post-4 
- 2010 Feb 
-- 2010 Frb 05 
--- post-5 
2011 
- 2011 Dec 
-- 2011 Dec 02 
--- post-6 
--- post-7 
-- 2011 Dec 21 
--- post-8 

+0

最好的辦法是:1)帶鏈接的主頁2010,2011; 2)第二(子頁面2010)與鏈接2010年1月,2010年2月等日期節點的層次頁面。 – 2013-03-21 14:25:00

+0

[Sitemap腳本]的可能重複(http://stackoverflow.com/questions/4123800/sitemap-script) – Jocelyn 2013-03-21 14:25:13

+0

我不知道如何做出最佳查詢。首先選擇所有匹配2010年的記錄,然後從中選擇2010年1月份的所有匹配記錄,但是請求太多。我需要每年重複所有日期。有沒有其他方法? – 2013-03-21 14:29:16

回答

1

首先你要選擇你的數據,以便它方便地打印出來在你的結構。應該是這樣的:

SELECT day(post_date) as day, month(post_date) as month, year(post_date) as year, 
DATE_FORMAT(post_date,"%Y-%m-%d") as created_at, post_title, 
post_id FROM posts ORDER BY created_at; 

然後你遍歷結果,並建立年,月和日指數一多維指標。一個條目可能是這樣的:

$data[2013][10][31] = array("post1", "post2"); 

因此,它很容易打印出您的網站地圖(只是幾個foreach結構)。

+0

它看起來很好。 – 2013-03-21 14:43:43

+0

對不起,第一個版本是越野車(如果你想覆蓋一年以上,你必須按整個日期分組)。 – herrjeh42 2013-03-21 14:45:04

+0

您的意思是ORDER BY,而不是GROUP BY。 – CBroe 2013-03-21 14:46:02