2012-11-10 37 views
0

我有一個下拉菜單,顯示考試的名稱,日期和時間,我想要做的是如果考試日期已經從當前日期或時間傳遞過來,那麼文本顯示爲紅色,否則文本顯示爲綠色。我有下拉文本應該是綠色不是紅色

問題是,如果當前日期是2012年10月11日(也就是今天),如果考試有此日期和時間如下:

2012年10月11日,16:00: 00

它以紅色而不是綠色顯示文字。問題在於它沒有識別當前時間,它認爲它是當前日期,應該是紅色的,但是由於當前時間在當前日期還沒有過去,所以它應該是綠色的。

數據庫將日期存儲爲2012-11-10,並將數據庫中的時間存儲爲16:00:00。雖然在下拉如提到存儲爲:2012年10月11日,16:00:00

下面是代碼:

<style> 
.red{ color:red; } 
.green{ color:green; } 
</style> 

...

$now = date("Y-m-d h:i:s"); 
    while ($sessionqrystmt->fetch()) { 
     if(strtotime($now) > strtotime($dbSessionDate)){ 
      $class = 'red'; 
     } else { 
      $class = 'green'; 
     } 
     $sessionHTML .= sprintf("<option value='%s' class='%s'>%s - %s - %s</option>", $dbSessionId, $class, $dbSessionName, date("d-m-Y",strtotime($dbSessionDate)), $dbSessionTime) . PHP_EOL; 
     } 

$現在應該是當前的日期和時間,$ dbSessionDate應該是2012年10月11日

UPDATE:

$sessionHTML = '<select name="session" id="sessionsDrop">'.PHP_EOL; 
$sessionHTML .= '<option value="">Please Select</option>'.PHP_EOL;   

$now = date("Y-m-d H:i:s"); 
echo strtotime($now).'<br>'; 
echo strtotime('10-11-2012, 16:00:00'); 
while ($sessionqrystmt->fetch()) { 
    if(strtotime($now) > strtotime($dbSessionDate)){ 
     $class = 'red'; 
    } else { 
     $class = 'green'; 
    } 
    $sessionHTML .= sprintf("<option value='%s' class='%s'>%s - %s - %s</option>", $dbSessionId, $class, $dbSessionName, date("d-m-Y",strtotime($dbSessionDate)), date("H:i",strtotime($dbSessionTime))) . PHP_EOL; 
    } 


$sessionHTML .= '</select>'; 

$assessmentform = "<form action='".htmlentities($_SERVER['PHP_SELF'])."' method='post'> 
<p><strong>Assessments:</strong> {$sessionHTML} </p> 
</form>"; 
+0

「或許應該刪除jQuery和JavaScript代碼,並添加PHP代碼。 – broofa

+0

@broofa:已經做到了。 – Aziz

+0

@CMB:你可以顯示'strtotime($ now)'和'strtotime($ dbSessionDate)'的值是什麼?因爲顯然,其中一個並不完全是你想象的。 – Aziz

回答

0

代碼似乎沒問題。試試:

$now = date("Y-m-d h:i:s"); 
echo strtotime($now).'<br>'; 
echo strtotime('10-11-2012, 16:00:00'); 

並檢查服務器時間。

UPDATE:

替換:

$sessionHTML .= sprintf("<option value='%s' class='%s'>%s - %s - %s</option>", $dbSessionId, $class, $dbSessionName, date("d-m-Y",strtotime($dbSessionDate)), date("H:i",strtotime($dbSessionTime))) . PHP_EOL; 

有:

$sessionHTML .= sprintf("<option value='%s' style='color: %s'>%s - %s - %s</option>", $dbSessionId, $class, $dbSessionName, date("d-m-Y",strtotime($dbSessionDate)), date("H:i",strtotime($dbSessionTime))) . PHP_EOL; 

防止CSS錯誤。

或更換:

strtotime($now) > strtotime($dbSessionDate) 

有:

strtotime($now) < strtotime($dbSessionDate) 
+0

這兩個回聲顯示這個'1352528283 1352563200'。這是什麼意思,我想知道是否可以將下拉菜單中的時間顯示從16:00:00更改爲16:00,例如? – CMB

+0

這意味着[自1970年1月1日00:00:00以來的秒數](http://php.net/manual/en/function.strtotime.php)。結果是好的,在$ class中將被存儲爲'綠色'。問題的根源在別處。嘗試檢查$ sessionHTML ... –

+0

你可以刪除最後兩個零。 –

相關問題