[PHP]如何讓一週內的新聞顯示New圖示?

挑戰Dreamweaver CS4互動網站百寶箱--使用PHP
http://www.e-happy.com.tw/indexbookshow.asp?bid=175

書中的第四章新聞系統程式,目前如果是今天的新聞可以顯示 New 圖示,有讀者問到如何讓一週內的新聞顯示New圖示?

我們先來看看原來書上的方式:

  1. <?php /*start db_input script*/ 1if ($row_RecNews['news_date'] == date("Y-m-d")){ ?> 

這個圖示的判斷式其實將資料庫中的日期與今天的日期,以 字串 的方式來比較,相同的話則顯示。

但是如果要如何判斷這個張貼的時間是在一週內呢?這就不是簡單的字串判斷就可以達成了。這裡我們必須要將 2 個以字串顯示的時間 數字化!想到這個問題時,茶米腦中顯示了一個 PHP 的時間函式:strtotime()

strtotime() 這個函式可以將字串中顯示的時間資料化為Unix時間戳記,詳細的使用方式茶米建記您可以參考:
挑戰PHP5/MySQL程式設計樂活學一書的 page 8-13 頁。

什麼是Unix時間戳記?
所謂的Unix時間戳記就是是從 '1970-01-01 00:00:00'GMT 開始的秒數
所以時間換算的方式要從指定的時間到 '1970-01-01 00:00:00' 之間一共有多少秒
然後再用date Function轉回字串。

那回到我們的範例,如果我們將張貼的時間與現在系統的時間送入 strtotime() 時會各自得到 2 個時間戳記,如果現在時間的時間戳記減去張貼時的時間戳記小於或等於一週的時間秒數,那代表這則留言是在一週內張貼的,如此即可達成我們的需求!所以首先我們來記算一下一週有幾秒:



7 X 24(hr) X 60(min) X 60(sec) = 604800

那判斷式只要寫成:

  1. if ( strtotime(現在的時間) - strtoteim(張貼的時間) <= 604800 ) { 顯示 New 圖示} 

即可,所以請依下圖來修改:

  1. <?php /*start db_input script*/ if (strtotime(date("Y-m-d")) - strtotime($row_RecNews['news_date'])<=604800){ ?> 

如此即完成所有的修改,是不是很簡單呢?如此一來,未來要改成讓一個月、二個月、半年的資料顯示圖示,是不是都可以輕鬆達成了呢?


原文出處:
http://www.dreamweaver.com.tw/?fid=2&viewtopic=31067


延伸閱讀:
挑戰Dreamweaver CS4互動網站百寶箱--使用PHP
挑戰PHP5/MySQL程式設計樂活學
[好書推薦]世界第一簡單資料庫
[MySQL]如何刪除關聯式資料?

如果覺得這篇文章對您有所幫助,在觀看完文章之餘,希望能點選下方方廣告,當作是對YOGO的支持,讓YOGO更有寫作的動力。

留言

這個網誌中的熱門文章

用PHP寄MAIL的方法

ImageMagick應用大全(一)

php安裝openssl的方法