채택완료

원하는 기간에만 노출하는 소스 점검좀 부탁드립니다

이벤트 페이지를 구현중입니다.

만약 이벤트 기간이 2015년6월30일부터 2015년8월1일이라고 가정하고

이 기간에만 이벤트 내용이 노출되게 하려고 합니다.

제가 생각한 코드는

Copy
<?php $now = date("Ymd"); //현재 날짜 $sevent1 = "20150712"; //이벤트시작날짜 $fevent1 = "20150818"; //이벤트끝날짜 $sevent1Y = $str = substr($sevent1, 0, 4); //시작날짜의 년도 뽑아오기$sevent1M = $str = substr($sevent1, 4, 2); //월 뽑아오기$sevent1D = $str = substr($sevent1, 6, 2); //일 뽑아오기 $fevent1Y = $str = substr($fevent1, 0, 4); //끝날짜의 년도 뽑아오기$fevent1M = $str = substr($fevent1, 4, 2); //월 뽑아오기$fevent1D = $str = substr($fevent1, 6, 2); //일 뽑아오기 ?>

 

이렇게 구성하고

 

Copy
<?php if ( $sevent1 <= $now && $now <= $fevent1 ) { ?><div>기간 : <?=$sevent1Y?>년 <?=$sevent1M?>월 <?=$sevent1D?>일 ~ <?=$fevent1Y?>년 <?=$fevent1M?>월 <?=$fevent1D?>일 </div><div>이벤트 해당내용</div><?php } ?>

 

이런 식으로 처리했는데요..

 

구현해보니 원하는 대로 나오기는 합니다만

php를 눈으로 배운 실력이라 그런지 왠지 미심쩍고 어수선해보입니다..

 

고수님들의 정리되고 명확한 소스는 어떻게 구현되는지 궁금합니다~

php문맹의 눈을 밝게해주세요~

|

답변 2개 / 댓글 2개

채택된 답변
+20 포인트

명확한 소스라기 보다, 좀 짧게 줄이자면...

한번 테스트는 해보시고, 소스의 핵심은

 

- 시간을 모두 UNIX_TIMESTAMP로 처리하고, 표현만 date 함수를 사용하는 것

 

- UNIX_TIMESTAMP를 구하기 위해서 time 함수와 strtotime 함수를 사용한 것

 

각 함수는 검색해보시면 더 자세한 용법이 있을거에요.

로직에 문제는 없어보입니다.

 

Copy
<?php$now = time();$sevent1 = strtotime("2015-07-12");$fevent1 = strtotime("2015-08-18");?> <?php if( $sevent1 <= $now && $now <= $fevent1 ) { ?><div>기간 : <?=date("Y년 m월 d일", $sevent1)?> ~ <?=date("Y년 m월 d일", $fevent1)?> </div><div>이벤트 해당내용</div><?php } ?>

답변에 대한 댓글 1개

감사합니다~ 아주 간결해졌습니다~ ^^

Copy
<?php  $now = date("Y/m/d"); //현재 날짜  $sevent1 = "2015/07/12"; //이벤트시작날짜  $fevent1 = "2015/08/18"; //이벤트끝날짜  $sevent_arr = explode("/", $sevent1);$fevent_arr = explode("/", $fevent1);?> ​

윗부분을 이렇게 구분자를 주어서 배열로 만들어주면 윗부분 소스는 조금 더 간단해질거같습니다..

직관적으로 하시기에는 별명님이 하신것도 알기 괜찮은거같다는 생각...ㅎㅎ

답변에 대한 댓글 1개

이렇게 하면 $sevent_arr,$fevent_arr 값으로 기간값을 불러오기 편하군요
감사합ㄴ디ㅏ ^^

답변을 작성하려면 로그인이 필요합니다.