2010-11-18 4 views
1

이벤트를 시작 날짜순으로 표시하는 이벤트 캘린더가 있습니다. 모든 것이 훌륭하지만 한 가지 문제가 있습니다. 오늘 날짜에 발생한 이벤트는 표시되지 않습니다. 나는 그들이 통과 한 후에 사건들을 제거하는 나의 "if"진술이 문제라고 믿는다.PHP 이벤트의 날짜 정렬

<? while($row = mysql_fetch_assoc($result)) { 
$id = $row['id']; 
$title = $row['title']; 
$text = $row['text']; 
$image_url = $row['image_url']; 
$start_date = date('F d, Y', strtotime($row['start_date'])); 
$start_hour = $row['start_hour']; 
$start_minute = $row['start_minute']; 
$start_am_pm = $row['start_am_pm']; 
$end_date = date('F d, Y', strtotime($row['end_date'])); 
$end_hour = $row['end_hour']; 
$end_minute = $row['end_minute']; 
$end_am_pm = $row['end_am_pm']; 
$tba = $row['tba']; 

if(strtotime($row['end_date']) > date('U')) { 
?> 
+0

입니다. 또한'$ id = $ row [ 'id']'를 할 이유가 없으며 코드를 깨끗하게 유지하고 시간을 절약하기 위해서'$ row [ 'id']'를 사용하면된다. – Webnet

답변

3

첫 번째 시도이있을 것이다

date('U') == time() 

그래서 당신이 time 대신 date를 사용할 수 있습니다, 난 그냥 것을 지적하고 싶다.

이제 문제가 생겼습니다. 이벤트의 end_date이 오늘로 설정된 경우 이벤트가 시작될 때 (예 : 2010-11-18 00:00:00)입니다. 이제 자정이 지나서 현재 날짜/시간이 end_date보다 커서 조건부가 작동하지 않는 이유 일 수 있습니다.

이 시도 : 문제가

실행중인 쿼리 무엇
if (strtotime($row['end_date']) == strtotime('TODAY')) { 
    // event is today 
} 
0

$ row [ 'end_date']는 시간이 아닌 날짜 만 반환한다고 생각합니다. 따라서 strtotime($row['end_date'])은 = 12:00 AM이고 date('U')은 현재 시간을 반환합니다. 당신이 $ 행의 일 오전 12시 01 분에이 작업을 실행 한 경우

그래서 [ '종료일'은, 당신은

if("12:00AM today" > "12:01AM today") { 

의 비교 모든

if (strtotime($row['end_date']) >= strtotime(date('Y-m-d'))) {