게시판정렬

게시판정렬

QA

게시판정렬

본문

아래처럼 필드에 입려되어있는데,

데이터 : [날짜를입력한경우/날짜를입력한경우(마감일순)/날짜를입력한경우(마감일오래남은순)]

 

리스트에서 마감일순정렬시 '날짜를입력안한경우-마감일순-마감일오래남은순'으로 정렬되고있는데,

<?php echo subject_sort_link('wr_5', $qstr2, 1) ?>마감일순</a>

 

'마감일순-마감일오래남은순-날짜를입력안한경우'로 변경하려면 어떻게해야하나요?

날짜를입력안한경우를 제일 뒤로보내고싶어요

 

이 질문에 댓글 쓰기 :

답변 3

wr_5 데이타 타입은 varchar 문자열로 되어있습니다.

 

날짜를 숫자개념으로 생각하면

최근날짜 > 이전 날짜 이런식으로 연산이 됩니다.

데이타가 2016-01-01 이렇게 날짜로 들어간것인지? 아니면 그냥 숫자로 들어간건지 확인해봐야하구요.

아마 날짜를 입력 안한 경우는 아무값도 넣지 않아서 null 또는 빈값으로 처리가 되어있을거예요.

 

님이 원하는 순서대로 정렬이 되게 하고 싶으면 일단 데이타들을 내림차순 정렬일때 "마감일순 > 마감일오래남은순 > 날짜를입력안한경우" 가 되게 해야합니다.

데이타를 원하는 정렬순서대로 넣을수가 없으면 쿼리문에서

order by if(wr_5='', 9999999999, cast(wr_5 as signed integer)) desc

이런식으로 조작할수 있긴합니다만.. 이렇게 되면 일이 좀 커집니다.

 

위에 설명을 해드리자면,

wr_5가 ""(빈값)이면 9999999999 란 숫자로 변경되고, 빈값이 아니면 그대로 wr_5로 해서 정렬을 하게 됩니다. 이건 정렬할때 임시로 사용하는거라 실제로 wr_5가 빈값일때 9999999999 로 들어가는 것은 아닙니다.

cast(wr_5 as signed integer) 이건 wr_5 데이타타입이 숫자형이면 안해도 되는데 기본이 varchar 문자열이라 문자열 데이타일경우 그냥 쓰면 제대로 인식이 안되서 정렬할때만 임시로 정수형으로 변경하는거예요 

 

 


특정 게시판만 저런 정렬을 쓴다면 굳이 소스를 변경하지 마시구요. 뭐 다른 게시판에서는 wr_5을 안쓴다면 wr_5만 예외처리해서 수정해도 되긴합니다.

 

"마감일순-마감일오래남은순" 중 어느게 항상 큰값인지와

"날짜를입력안한경우" 는 데이타가 어떻게 들어가 있는지 알아야 할것같습니다. 

 

아니면 데이타 타입을 date 으로 변경하게 되면 날짜 형식으로 있는 데이타는 그 날짜대로 빈값은

1970-01-01 로 들어갑니다.

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 300
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT