2012-04-25 2 views
0

다음 14 일 동안 예정된 이벤트를 표시하는 php/mysql 이벤트 목록이 있습니다. DB를 8 개 필드다음 14 일간의 하루 길이가 하나 이상인 이벤트 목록

event_ID, 
date_1, 
date_2, 
eventTitle, 
eventDetails, 
location, 
publish, 
updated. 

내가

SELECT gpe.*, gpr.name 
FROM growl_presevents gpe, growl_presrail gpr 
WHERE gpe.location LIKE gpr.railID AND (date_1 >= '$today' AND date_1 <= '$week') 
AND gpe.publish = 'y' 
ORDER BY date_1 ASC 

배열이

$today = date('Y-m-d');      /// Todays date 

$week = date('Y-m-d', time() + (86400*14)); /// Todays date + 14 days 

목록은 괜찮 이러한 진술에 의해 채워진다이 SQL 문을 사용하여 목록을 작성했습니다를 가지고,하지만 난 필요 1 일 이상 지속될 경우 이벤트가 표시되도록 조정할 수 있으며 date_1은 14 일 기간 밖에 있습니다.

(실제뿐만 아니라 예를 들어 데이터)

오늘 내 위의 SQL 쿼리를 사용하여 2012-02-01

date_1  date_2  location Title   details 

2012-02-07 NULL  Loc001  Show   Stage show 

2012-02-13 2012-02-18 Loc002  Open Air  Festival 

2012-02-17 NULL  Loc001  Comedy  Comedy Show 

경우, 처음 두 날짜는, '오늘 $를'보여 '3'세에 대한 것 '8th'에 첫 번째 행이 사라집니다. 지금까지는 괜찮 았지만, 여기가 내가 도움이 필요한 곳입니다. '14th'행 2에서이 쿼리를 사용하면 사라지 겠지만 이벤트는 18 일까지 켜져 있으므로 18 일까지 계속 표시하고 싶습니다.

아마도이 작업을 수행하는 쉬운 방법이있을 수 있습니다.하지만이 작업을 쉽게 이해할 수 없으므로 도움이 될 것입니다.

감사

답변

0

은 당신이 또는 DATE_1에 하듯이

SELECT gpe.*, gpr.name 
FROM growl_presevents gpe, growl_presrail gpr 
WHERE gpe.location LIKE gpr.railID 
AND (
    (date_1 >= '$today' AND date_1 <= '$week') 
    OR (ISNULL(date_2,0) >= '$today' AND ISNULL(date_2,0) <= '$week') 
    ) 
AND gpe.publish = 'y' 
ORDER BY date_1 ASC 

그래서 기본적으로 날짜 2에서 같은 검사를 수행하십시오. NULL 날짜가 있으면 ISNULL을 사용하여 0을 제공하십시오.

+0

감사합니다. 이제 목록을 정렬했습니다. :) – ee12csvt

관련 문제