호텔천사

몇일 남음? 종료일까지 **일 계산하기 mysql / script

안녕하세요.

제목을 어떻게 해야 하는지 몰라 제가 아는 용어로 적었습니다. 그래서 설명이 좀 필요할 것 같습니다.

 

[상황]

이벤트 게시판 처럼 행사 시작일 / 행사 종료일을 입력 합니다.

wr_8: 행사 시작일 입력함. 입력값 형태(20211219)

wr_9: 행사 종료일 입력함. 입력값 형태는 위와 동일

 

아래와 같이 나타내고 싶었습니다.

"행사 종료 **일 전"

833227679_1639901897.3944.jpg

적용한 사이트: 

https://klick.co.kr/bbs/board.php?bo_table=wedding

 

PHP로 시도 했다가 잘 안되었어 먼저 mysql방식으로 해결 했습니다.(추후 균이님의 조언으로 소스코드가 간결하게 되었습니다)

추가적으로 비타주리님이 스크립트로 소스를 간결하게 짜 주셔서 아래에 추가 했습니다.

 

도움을 많이 받아 감사의 마음으로 실력도 안되지만 공유하는 마음으로 올립니다.

혹시 잘못된 부분이나 좀더 개선할 수 있는 부분이 있으면 의견 주시면 감사하겠습니다.

 

 

[적용한 것]

1. list.skin.php 상단에 아래 코드를 넣어 줬습니다.

[code]

//mysql 이용해서 날짜차이 구하기 by 균이님
function my_date_diff($start_date, $end_date) {
 $row = sql_fetch("select datediff('$end_date', '$start_date') as dd ");
return $row['dd'];
}

[/code]

 

2. list.skin.php 필요한 부분에 아래 코드를 넣어 줬습니다.

{$rest_day} 이 일을 표시하는 부분 입니다.

 

[code]

<?php
$today = date("Ymd");//오늘
$start_day = $list[$i]['wr_8']; // 시작일
$end_day = $list[$i]['wr_9']; // 종료일
$rest_day = my_date_diff($today, $end_day);

if ($today < $start_day) echo "<span style=color:#0000FF>행사 진행 전</span> | 신청가능<span style=color:#ff0000>▼</span>";
    else {
        if ($today < $end_day) echo "<span style=color:#ff0000>행사 진행 중</span> | 행사 종료 <strong>{$rest_day}</strong>일 전";
        else if ($today == $end_day) echo "<span style=color:#ff0000>행사 진행 중</span> | 행사 마지막날";
        else echo "<span style=color:#ff0000>행사 종료</span>";
    }
?>

[/code]

 

 

 

추가...

스크립트로 처리 하기 by 비타주리님

적용할 곳에만 아래와 같이 넣어 주면 됩니다.

[code]

<?php
$today = date("Ymd"); //오늘
$start_day = $list[$i]['wr_8']; // 시작일
$end_day = $list[$i]['wr_9']; // 종료일
if ($today < $start_day) echo "<span style=color:#0000FF>행사 진행 전</span> | 신청가능<span style=color:#ff0000>▼</span>";
    else {
        if ($today < $end_day) {
            echo "
                <script>
                currentDay = '$today';
                endDay = '$end_day';
                currentDay = Number(currentDay.slice(0, 4)) + ',' + Number(currentDay.slice(4, 6)) + ',' + Number(currentDay.slice(-2));
                endDay =  Number(endDay.slice(0, 4)) + ',' + Number(endDay.slice(4, 6)) + ',' + Number(endDay.slice(-2)); 
                restDay = (new Date(endDay).getTime() - new Date(currentDay).getTime()) / 1000 / 60 / 60 / 24;
                document.write('<span style=color:#ff0000>행사 진행 중</span> | 행사 종료 <strong>' + restDay + '</strong>일 전');
                </script>
            ";
        }
        else if ($today == $end_day) echo "<span style=color:#ff0000>행사 진행 중</span> | 행사 마지막날";
        else echo "<span style=color:#ff0000>행사 종료</span>";
    }
?>

[/code]

 

 

 

 

[마무리]

비 프로래머 초보 입장에서 글을 작성했습니다. 잘못된 정보는 바로 지적해주세요.

그리고 받은 만큼 공유 하고 싶은 마음에서 공개를 했으니 귀엽게 봐주세요.

그리고 끝까지 도움을 주신 비타주님께 감사 드립니다.

 

좋은 하루 되세요

|

댓글 4개

아래 소스로만 가능할 듯요
남은 날짜는 php로 계산해도 되는데 저는 js가 더 편해서 그리 만들었습니다.

[code]
<?php
$today = date("Ymd"); //오늘
$start_day = $list[$i]['wr_8']; // 시작일
$end_day = $list[$i]['wr_9']; // 종료일
if ($today < $start_day) echo "<span style=color:#0000FF>행사 진행 전</span> | 신청가능<span style=color:#ff0000>▼</span>";
else {
if ($today < $end_day) {
echo "
<script>
currentDay = '$today';
endDay = '$end_day';
currentDay = Number(currentDay.slice(0, 4)) + ',' + Number(currentDay.slice(4, 6)) + ',' + Number(currentDay.slice(-2));
endDay = Number(endDay.slice(0, 4)) + ',' + Number(endDay.slice(4, 6)) + ',' + Number(endDay.slice(-2));
restDay = (new Date(endDay).getTime() - new Date(currentDay).getTime()) / 1000 / 60 / 60 / 24;
document.write('<span style=color:#ff0000>행사 진행 중</span> | 행사 종료 <strong>' + restDay + '</strong>일 전');
</script>
";
}
else if ($today == $end_day) echo "<span style=color:#ff0000>행사 진행 중</span> | 행사 마지막날";
else echo "<span style=color:#ff0000>행사 종료</span>";
}
?>
[/code]
@비타주리
스크립트로 짜주셨네요. 감사합니다.

디비로 표현하는 것은 균이님께서 조언 주셔서 다시 게시물 내용 정리 할께요.
[http://sir.kr/data/editor/2112/f145c2af19c7309da8dc246ced12b65f_1639956896_9897.png]
유용한 정보네요 좋은정보 제공해주셔서 감사합니다.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기
🐛 버그신고