여분필드 정렬기준 에러..

여분필드 정렬기준 에러..

QA

여분필드 정렬기준 에러..

본문

여분필드를 활용해서 목록상에 정렬기능을 구현하고 있습니다.

팁중에..

https://gnustudy.com/bbs/board.php?bo_table=skin_board&wr_id=74
이 내용을 활용해서 구현했습니다.

 

여분필드값들은..

1 2 3 4~~~100 101 102등 올라갑니다.

 

그런데 희안하게..

영어나 한글은 정렬이 제대로 되는듯 한데..숫자로 입력한 여분필드는..

 

2자리와 3자리가 따로 분리되서 정렬이 되네요.

예를들어..

큰숫자 기준정렬하면..

 

99

98

97

.

.

110

109

108

.

.

 

이런식으로 정렬이 됩니다.

아래 내용데로 했는데 뭐가 문제일까요..

팁 중 관리페이지의 정렬기능에 여분필드 활성화한건 제대로 나옵니다.


----------------------------------------------------------------------

 

목록 타이틀에서 클릭했을 때 정렬하는 방법입니다.

 

 

 

예를 들어 순위 글자를 클릭했을 때 정렬을 바꾸는 방법이죠.

 

수정 파일1 : 게시판 스킨 list.skin.php

 

타이틀 부분을 이렇게 변경합니다.

<th scope="col"><?php echo subject_sort_link('wr_1', $qstr2, 1) ?>순위</a></th>

 

 

수정 파일2 : bbs/list.php

 

아래 부분에 wr_1 을 추가합니다.

$sst = preg_match("/^(wr_datetime|wr_hit|wr_good|wr_nogood|wr_1)$/i", $sst) ? $sst : "";

 

수정하고 확인하면 처음에 말했던 것처럼 문자형이라서 정렬이 안 맞을 겁니다.

여기도 마찬가지 방법으로 수정합니다.

 

list.php 파일에서 위 내용 좀 더 아래에 있는 sql_order 부분을 이렇게 변경합니다.

 

if ($sst) {

    if ($sst == 'wr_1') {

        $sql_order = " order by wr_1+0 {$sod} ";

    } else {

        $sql_order = " order by {$sst} {$sod} ";

    }

}

이 질문에 댓글 쓰기 :

답변 2

해당 필드의 데이터 타입을 확인해보세요.
int 계열의 숫자라면 
1,2,3,4....10,11,...20 이런 식일거고
varchar 나 String 계열이라면
1,10,11,12...2,20...3,31... 이런 방식으로 정렬이 될겁니다.

'문자'로 취급되고 있기 때문입니다.

 

'문자'로 취급시에는 '99' 가 '101' 보다 큽니다.

 

wr_1 칼럼의 datatype 을 int 로 변경해 볼 수 있습니다.

문자로 취급해서 그리된다는걸 이해는 했는데..
관리자페이지에서 여분필드별 정렬을 사용시에는 그런 text나 int값 상관없이 정열이 잘 되는걸 확인하였답니다.
그래서 그런 근본적인 문제가 아닐듯 싶어 확인하다가..
스킨상에 별도 list지정하는 부분이 나뉘어져있더라구요.
거기에 위 리스트에서 정렬기능 추가코드를 넣었더니..


잘 먹힙니다!!!?
text래도 먹히는거였네요.

답변을 작성하시기 전에 로그인 해주세요.
전체 0 | RSS
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

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