해결이 안 되고 미련이 남아 다시 질문을 올립니다
본문
안녕하세요?
해결이 안 되고 미련이 남아 다시 질문을 올립니다. 죄송합니다...ㅜㅜ
여분필드 wr_2를 이용하여 list.skin.php에서 다음과 같이 하였습니다.
마감일 입력 시에는 오늘이라면 '19-01-05' 이렇게 값을 넣었고 정해지지 않은 것은 그냥 문자로 '채용시'라고 넣었습니다.
<?php
if(strtotime($list[$i]['wr_2'] ) - G5_SERVER_TIME > (86400 * 1)){
echo $list[$i]['wr_2'] ;
} else if(strtotime($list[$i]['wr_2'] ) - G5_SERVER_TIME < (86400 * 1)){
echo '마감임박';
} else if( is_string($list[$i]['wr_1']) == true ){
echo '채용시';
} else{
echo $list[$i]['wr_2'] ;
}
?>
즉, 바라는 결과는
하루 이상이 남으면 '연-월-일'로
하루 미만이 남으면 '마감임박'으로
'채용시'라고 문자로 입력한 곳은 그냥 '채용시'로 나타내고 싶습니다.
위에처럼 하였더니 다른 것은 잘 되는 것 같은데...'채용시'가 '마감임박'으로 나타납니다.
어떻게 해야 하는지요?
즐거운 주말 되시기 바랍니다.
감사합니다.
답변 4
$left = strtotime($list[$i]['wr_2']) - G5_SERVER_TIME;
if($list[$i]['wr_2'] == "채용시") {
echo "채용시";
} else {
echo $left >= 86400 ? $list[$i]['wr_2'] : "마감임박";
}
조건문의 순서를 바꿔 보세요.
'채용시'의 조건을 위쪽으로..
if(strtotime($list[$i]['wr_2'] ) - G5_SERVER_TIME > (86400 * 1)){
echo $list[$i]['wr_2'] ;
} else if(strtotime($list[$i]['wr_2'] ) - G5_SERVER_TIME < (86400 * 1)){
echo '마감임박';
}
위 두개로 날짜조건이 충족되고 있기 때문에
아래에 위치하고 있는 else if문이나 else문은 더 이상 수행되지 않고 if문을 벗어 나게 되니
당근 '채용시'는 나타나지 않는 로직입니다.
그리고 '채용시'에 해당하는 조건은 위것들과는 전혀 다른 것이기 때문에 거기에 끼어 있으면
안되는 겁니다.
아래 처럼 바꿔야겠죠.
if ( !empty($list[$i]['wr_1']) && is_string($list[$i]['wr_1'])) {
echo '채용시';
}
if (strtotime($list[$i]['wr_2'] ) - G5_SERVER_TIME >= (86400 * 1)) {
echo $list[$i]['wr_2'] ;
} else {
echo '마감임박';
}
로직에서
1. wr_1 이 문자열이면 '채용시' 로 표시하는것으로 보이는데
2. wr_2 의 값은 날짜 입니다.
그러면 wr_1의 값은 무엇인가요?
wr_2에 기록된 일자가 날짜인지 아닌지 정확하지 않은상황입니다.
현 출력화면이 문제라기 보다는
로직 설계에서 먼저
wr_1에는 채용시/일자 두개중 하나로 값을 선택하게 입력받고
wr_1 의 값이 '채용시' 라면
출력을 '채용시' 로 표기하고
wr_1의 값이 '일자' 라면
wr_2의 값에 일자가 오늘이면 '마감임박'
wr_2의 값이 오늘 이후이면 wr_2 출력
wr_2의 값이 오늘보다 이전날짜이면 '마감'
으로 로직을 재정리 하시는게 맞는것 같습니다.
이 때 wr_1의 값을 '채용시', '날자' 로 하시는것도 좋고
좀더 간결한 로직을 위해서 wr_1의 값을 0은 날짜('기본값'), 1은 채용시 형태로 하면
if ($list[$i]['wr_1']) { // <-- 숫자로 한경우 0이면 날짜는 거짓으로 작동, 1이면 채용시는 채용시를 출력
echo "채용시";
}
로 처리하시는게 더 효율적이 아닐까 싶습니다.
-----------------
위 로직에서 오타로 wr_2가 wr_1로 표기된것이라면
평정심님의 의견대로 wr_1에 해당되는 '채용시'는 조건이 선행되어야 합니다.
지정하여 로직을 만들면