여분필드 여러개 항목 한번에 정렬
본문
/bbs/list.php
리스트 파일에 정렬할 필드를 넣어놨습니다.
if (!$sst) {
if ($board['bo_sort_field']) {
$sst = $board['bo_sort_field'];
} else {
$sst = "wr_num, wr_reply";
$sod = "";
}
} else {
$sst = preg_match("/^(wr_datetime|wr_hit|wr_good|wr_nogood|ca_name|wr_34|wr_35|wr_36|wr_37|wr_39|wr_44|wr_45|wr_50|wr_51|wr_56|wr_60||wr_13|wr_14|wr_15|)$/i", $sst) ? $sst : "";
}
그리고 list.skin.php 파일에서 이렇게 하나씩 정렬하면 정렬이 잘되는데
<?=subject_sort_link('wr_51', $qstr3, 1)?>
여러 여분필드(형식은 같음)를 한번에 정렬해야해서 이런식으로 했는데 정렬이 제대로 안되네요.
<?=subject_sort_link('wr_51,wr_39,wr_37', $qstr2, 1)?>
해결가능한 방법이 있을까요? 몇일째 헤매고 있네요..
도와주시면 감사하겠습니다!
!-->답변 1
subject_sort_link 함수를 보시면...
첫번자인자가 sst에 들어간 url을 만들어주네요.
즉,
sst=wr_51,wr_39,wr_37 이 만들어진다는 거겠죠.
이것은 리스트 쿼리에서 처리하게 되면...
아마도 select ~~~ order by wr_51,wr_39,wr_37 desc 가 만들어지겠죠.
보시면 아시겠지만...
order by는
wr_51먼저 기본 asc로 먼저 정렬이 되고 중복정렬인 경우에만 wr_39 asc의 정렬조건에 따르고 거기서 다시 중복정렬인경우 wr_37의 desc가 적용됩니다..
따라서 별 중복이 없으면 항상 wr_51 asc의 정렬로 계속 나올거라 예상이 되어지네요.
가장 쉬운 해결책은 첫번째인자에 'wr_51 desc,wr_39 desc,wr_37' 로 정렬순서도 포함하여 넣는 방법입니다. 맨마지막 wr_37은 기본적으로 desc가 들어가고 또는 3번째 인자값에 desc나 asc로 넣는게 맨마지막으로 할당될거라 예상되어집니다.
두서없이 적었지만 아마 맞을거라 생각됩니다.