관리 메뉴

웹개발자의 기지개

[PHP] 유용한 실무팁2 - 이벤트 기간 설정 (이벤트중,이벤트종료) Timestamp 활용 본문

PHP

[PHP] 유용한 실무팁2 - 이벤트 기간 설정 (이벤트중,이벤트종료) Timestamp 활용

http://portfolio.wonpaper.net 2022. 12. 26. 16:02

 

이벤트 기간(시작일, 종료일) 을 지정하고 그사이에 현재 아이템의 이벤트 상태를 나타내주는 실무팁을 알아보자.

 

이를 위해 핵심은  DB내에 Timestampe 형태로 날짜를 활용하는게 포인트이다.

 

String 형의 문자 날짜를 Timestampe 로 간단히 변환 시킬수 있는 놈이 strtotime() PHP 함수가 있다.

 

우선 이벤트박스 날짜 input 박스를 입력할 때 UI 를 고려하여 달력  jquery 를 활용하였다.

 

 

[  이벤트쓰기 php 페이지 ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<link rel="stylesheet" href="//code.jquery.com/ui/1.13.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.1/jquery-ui.js"></script>
 
시작일 : <input id="datepicker1" name="spare1" type="text" style="width:200px;font-size:9pt;">
종료일 : <input id="datepicker2" name="spare2" type="text" style="width:200px;font-size:9pt;">
 
<script>
$(function() {
 $("#datepicker1,#datepicker2").datepicker({
     showMonthAfterYear:true,
     monthNamesShort: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'],
     dayNamesMin: ['일','월','화','수','목','금','토'],
     showAnimation: 'slider',
     dateFormat: 'yy-mm-dd',
     showOtherMonths: true,
     selectOtherMonths: true,
     changeMonth: true,
     changeYear: true
 });
});
</script>
cs

 

[ 이벤트 목록 페이지 ] - 이벤트 진행 상태 표시

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?
$start_date = "2022-12-01";
$end_date   = "2022-12-31";
 
$start_dateT = strtotime($start_date);
$end_dateT = strtotime($end_date);
if ($end_dateT)  $end_dateT += 86400;
 
$todayT = time(); // 필자 글등록 오늘시점 2022-12-26
 
//echo $todayT . " / " . $start_dateT . " / " . $end_dateT . "<br>";
 
if ($start_date || $end_date) {
?>
    <br>이벤트 : <?=$start_date?> ~ <?=$end_date?>  
    <br>
<?
    if ($start_dateT >= $todayT) {
        echo "<span style=''>이벤트 기간이 아닙니다.</span>";
    } else if ($start_dateT < $todayT && $end_dateT > $todayT) {
        echo "<span style='color:green;'>이벤트 진행중</span>";
    } else if ($end_dateT <= $todayT) {
        echo "<span style='color:red;'>이벤트 지남</span>";
    }
// end of if
?>
cs

1라인과 2라인은 DB 에서 불러온 시작일 text 종료일 text 를 이용하면된다.

날짜에 대하여 timestamp 값을 받아서 오늘의 $todayT 값이 시작일과 종료일 timestampe 에서 어느 위치에 있느냐에 따라서 진행형태를 나타내주면 된다.

 

 

 

 

Comments