여분필드 정렬기준 에러..
본문
여분필드를 활용해서 목록상에 정렬기능을 구현하고 있습니다.
팁중에..
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 로 변경해 볼 수 있습니다.