2012-11-10 3 views
0

시험 날짜, 시간 및 날짜를 ​​표시하는 드롭 다운 메뉴가 있는데 시험 날짜가 현재 날짜 또는 시간에서 전달 된 경우 텍스트가 빨간색으로 표시되고 그렇지 않으면 텍스트가 녹색으로 표시됩니다. 나는 데드롭 다운의 텍스트는 녹색이 아니어야합니다.

문제가 있음을 현재 날짜가 2012년 10월 11일입니다 (오늘입니다) 그리고 만약 시험이 날짜 아래 시간이있는 경우 :

2012년 10월 11일, 16:00 : 00

녹색으로 표시되지 않고 빨간색으로 텍스트가 표시됩니다. 문제는 현재 시간을 인식하지 못한다는 것입니다. 현재 날짜가 현재 날짜이므로 빨간색이어야하지만 현재 시간이 현재 날짜를 경과하지 않았으므로 녹색이어야합니다.

데이터베이스는 날짜를 2012-11-10으로 저장하고 데이터베이스의 시간은 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; 
     } 

$ : 2012년 10월 11일, 아래

16시 0분 0초 코드입니다 지금 현재 날짜와 시간이어야하며, $ 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와 및 자바 스크립트 태그를 제거하고, 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' style='color: %s'>%s - %s - %s</option>", $dbSessionId, $class, $dbSessionName, date("d-m-Y",strtotime($dbSessionDate)), date("H:i",strtotime($dbSessionTime))) . PHP_EOL; 

는 CSS의 실수를 방지하려면 다음과

$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; 

.

또는 교체 :

strtotime($now) > strtotime($dbSessionDate) 

과 :

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

두 개의 에코는 '1352528283 1352563200'을 표시합니다. 이것이 의미하는 바는 무엇이며 예를 들어 드롭 다운 메뉴의 시간 표시를 16:00:00에서 16:00로 변경할 수 있는지 알고 싶습니까? – CMB

+0

[1970 년 1 월 1 일 00:00:00 (UTC) 이후의 초 수] (http://php.net/manual/en/function.strtotime.php)를 의미합니다. 결과는 정상이며 $ class는 '녹색'으로 저장됩니다. 문제의 근원은 다른 곳에있을 것입니다. check $ sessionHTML ... –

+0

그리고 마지막 두 개의 0을 제거 할 수 있습니다. –