테스트 사이트 - 개발 중인 베타 버전입니다

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

· 3년 전 · 3158 · 4

안녕하세요.

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

 

[상황]

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

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개

3년 전
아래 소스로만 가능할 듯요
남은 날짜는 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]
3년 전
@비타주리
스크립트로 짜주셨네요. 감사합니다.

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

게시글 목록

번호 제목
24318
24317
24315
24309
24294
24293
24277
24262
24260
24253
24251
24236
24233
24228
24226
24221
24214
24203
24201
24199
24196
24195
24194
24192
24191
24187
24185
24183
24172
24168