這真是你寫指定的if()
條件,只是一個簡單的例子。沒有魔法。首先,我們需要知道customer_date
字段的格式。由於您直接將其打印到HTML代碼中,我猜它是以文本格式,所以我們需要做的第一件事是將其轉換爲日期對象。
$custDate = new DateTime($row['customer_date']);
該日期是否是一個合適的格式只會工作,但說實話,如果它不是在標準的MySQL日期格式,那麼你應該現在就停止和修復,我們再往前走了。
您還需要當前日期作爲日期對象:
$currDate = new DateTime();
現在你可以很輕鬆地使用上DateTime類的方法對它們進行比較:
$dateDiff = $currDate->diff($custDate)->days;
現在你明白了,你可以做你的if()
條件。
您使用mysql_fetch_array()
:
不過,我想指出的幾件事情。請注意,mysql_
功能已過時;如有可能,您應該用mysqli_xxx
或PDO庫進行更換。
你建議在<td>
裏面放入<span>
這個類 - 可以直接把類放入<td>
。這將是一個更清潔的選擇,所以我會在答案中使用它,儘管這取決於你。
您建議使用類名稱red
,,yellow
。請注意,這不是特別好用的類名。類名應該反映元素的實際用途,而不是它的外觀。這是因爲使用類和將樣式從HTML中分離出來的重點在於可以在不更改HTML的情況下更改樣式。但是,如果類名稱只是顏色名稱,它會將其與邏輯上的顏色聯繫起來;您也可以將顏色直接放入HTML中。更好的類名選擇可能類似custExpired
,custNearlyExpired
等。這會給你以後更多的靈活性,並使得閱讀它的代碼更容易理解(例如google bot!)。
因此,所有考慮到這一點,這裏的一些代碼對你:
$currDate = new DateTime();
while ($row = $mysqli->fetch_array($list_customers)) {
$custDate = new DateTime($row['customer_date']);
$dateDiff = $currDate->diff($custDate)->days;
$class = '';
if($dateDiff < 30) { $class = 'custNearlyExpired'; }
if($dateDiff < 0) { $class = 'custExpired'; }
echo "<td class='custDate {$class}>{$row['customer_date']}</td>\n";
}
和CSS:
td.custDate {
background: green;
}
td.custDate.custNearlyExpired {
background: yellow;
}
td.custDate.custExpired {
background: red;
}
希望有所幫助。
'customer_date'字段的類型是什麼? – Adi 2012-07-12 20:20:00
請不要在新代碼中使用'mysql_ *'函數。他們不再被維護,社區已經開始[棄用流程](http://goo.gl/KJveJ)。請參閱[**紅框**](http://goo.gl/GPmFd)?相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定,[本文](http://goo.gl/3gqF9)將有助於選擇。如果你關心學習,[這裏是很好的PDO教程](http://goo.gl/vFWnC)。 – 2012-07-12 20:26:40
@大衛:我知道你已經接受了一個答案,但也請閱讀我的答案。我已經提出了幾點你可能需要知道的。 – Spudley 2012-07-12 20:47:49