2009-07-27 44 views
0

在我開始id之前,喜歡說ive將此問題作爲更多討論而不是問題問題發佈。檔案生成器PHP

在我的數據庫我有新聞發佈可以說3列(標題,標題,日期)。其他ID和標題是自我解釋日期存儲在mktime()值中,換句話說,自1970年1月1日以來經過的秒數。

現在我想要做的是構建存檔鏈接,

  • 2009年7月
  • 2009年6月2009年
  • 二月2009年
  • 2008年12月

請注意沒有帖子的月份不顯示。

現在,作爲一個最初的想法我想

  1. 開始與當月
  2. 的最後一天,並獲得當月
  3. 第一天的價值做一個MySQL COUNT對於日期> = First_Day_Seconds和日期的帖子,Query/mysql_num_rows < = Last_Day_Seconds
  4. 顯示或放置數組中的值
  5. 做anoth呃查詢以檢查是否有更多的值被發現WHERE日期< First_Day_Seconds(突破如果沒有找到行)

現在,以上只是我的頭頂的東西。但如果你有任何想法來加快這個過程,請分享。

會說提前,日期必須在mktime格式

+0

兩個人都很喜歡這個。 :D – 2009-07-27 10:05:10

回答

3

我會使用一個數據庫,「本地」時間格式建議,但它與UNIX時間戳爲好。

你可以簡單地做:

SELECT DISTINCT FROM_UNIXTIME(date, '%M %Y') FROM posts; 

任選與WHERE條款限制日期過去或將來的日期。可能是一個ORDER條款投入良好的措施。這應該是幾乎所有需要的,讓數據庫儘可能地做更多的工作。

如果您需要更多的格式選項,選擇"%Y-%m"代替日期和PHP格式化:

date($myCustomFormat, strtotime("$date-01")); 
+0

很好完成...我只是跑了那個查詢和哇! – 2009-07-27 06:33:31

0

您可以使用此查詢來獲取年

"SELECT *,content_id,COUNT(content_id) AS itemCount FROM content_mast GROUP BY DATE_FORMAT(date_upload,'%Y') DESC"; 

現在使用可以使用此查詢獲取當年的月份

$tday = date("Y", $datetime); 
$s1="select * from content_mast where DATE_FORMAT(date_upload,'%Y')=$tday";