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

if 구문좀 봐주세요. 채택완료

호텔천사 3년 전 조회 1,783

안녕하세요.

 

구글링해서 공부한대로 넣은것 같은데...결과값이 자꾸 이상하게 나오네요.

아래에서 아래 규칙이 안맞고 있습니다.

왜 그런가요? 

 }else if ($start_day == $end_day){
        echo "행사 진행 중 | 행사 당일";

 

 

</p>

<p><?php

    $today = date("Ymd");//오늘

    $start_day = $list[$i]['wr_8']; // 시작일

    $end_day = $list[$i]['wr_9']; // 종료일

    $rest_day = $list[$i]['wr_9'] - $today;</p>

<p>    if ($today > $end_day){

    echo "<span style=color:#ff0000>행사 종료</span>";

    }else if ($start_day <= $today && $today <= $end_day){

        echo "<span style=color:#ff0000>행사 진행 중</span> | <span style=color:#000000>종료 ".abs($rest_day)."일전</span>";

    }else if ($start_day == $end_day){

        echo "행사 진행 중 | 행사 당일";

    }else{

        echo "<span style=color:#0000FF>행사 진행 전</span> | 신청가능<span style=color:#ff0000>▼</span>";

    }

?></p>

<p>

 

 

그리고 혹시...

날짜 계산을 편하게 하기 위해 날짜 표시 방법을 

20211218 이렇게 나타내고 있습니다.

하지만 결과값은  

2021년 12월 18일 으로 나타내고 싶은데 글자를 파싱해서 나타내면 된다는 것까지는 알겠는데..

검색해봐도 잘 모르겠네요. 힌트나 관련 사이트 알려주시면 감사하겠습니다.

 

감사합니다.

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

답변 2개

채택된 답변
+20 포인트

</p>

<p><?php 

if ($today < $start_day) echo "행사이전";

else {

    if ($today < $end_day) echo "행사진행 중";

    else if ($today == $end_day) echo "행사 당일";

    else echo "행사종료";

}

?></p>

<p>

 

며칠 남음. 이건 단순히 행사종료일에서 행사진행일을 빼는 방법으로는 안 됩니다.

왜냐하면 해가 넘어가거나 달이 넘어갈 경우 20220101-20211231 식이 되면 문제가 생기니까요.

그누 검색이나 인터넷 검색을 통해서 수능일 카운터 계산 등을 검색해서 남은 날짜를 빼시거나 깨끗하게 포기하시거나 하는 것을 권해 드립니다.

저는 여기까지입니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

호텔천사
3년 전
감사합니다.
며칠남음에 대한 해가 넘어가거나 달이 넘어갈경우를 생각 못했네요.
그래서 깨끗하게 포기하고 짜주신 코드를 적용 했습니다.
오늘 if 문 공부했는데...참 쉬운거 같으면서도 어렵네요. else 아래 또 if를 넣을 수도 있는 것도 처음 알았습니다. 이번 기회에 많이 배웠습니다. 정말로 감사 드려요. 제가 제 사이트에 꼼꼼히 노트해 두고 있습니다.

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

else if 를 쓰지 말고 마지막까지 모두 if 문으로 바꿔보세요.

 

문자열 파싱은 여러가지가 있지만 php 에서는 substr 로 자바스크립트에서는 slice 로 사용해 보았습니다.

이외에도 많은 방법이 있습니다.

 

<div> 에 넣는다는 가정 하에...

 

php

</p>

<p><?php

$day = "20211218";

echo "<div>".substr($day, 0, 4)."년 ".substr($day, 4, 2)."월 ".substr($day, 6, 2)."일</div>";

?></p>

<p>

 

자바스크립트

</p>

<p><script>

day = "20211218";

document.write("<div>" + day.slice(0, 4) + "년 " + day.slice(4, 6) + "월 " + day.slice(6, 8) + "일</div>");

</script></p>

<p>

 

믈론 php 에서는 $day = $list[$i]['wr_8']; 로

자바스크립트에서는 day = <?php echo $list[$i]['wr_8']; ?>; 로 바꿔서 사용하셔아겠죠.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

호텔천사
3년 전
안녕하세요.
아래와 같이 고쳤는데요.
행사 당일인 경우는 모든 경우 가 해당 되네요.

20211218 ~ 20211218

행사 진행 중 | 종료 0일전행사 진행 중 | 행사 당일행사 진행 전 | 신청가능▼


[code]
if ($today > $end_day) echo "<span style=color:#ff0000>행사 종료</span>";
if ($start_day <= $today && $today <= $end_day) echo "<span style=color:#ff0000>행사 진행 중</span> | <span style=color:#000000>종료 ".abs($rest_day)."일전</span>";
if ($start_day == $end_day) echo "행사 진행 중 | 행사 당일";
if ($tody < $start_day) echo "<span style=color:#0000FF>행사 진행 전</span> | 신청가능<span style=color:#ff0000>▼</span>";
[/code]

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

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

로그인