테스트 사이트 - 개발 중인 베타 버전입니다

여분필드 여러개 항목 한번에 정렬 채택완료

hazkiryo 9년 전 조회 2,222

/bbs/list.php

리스트 파일에 정렬할 필드를 넣어놨습니다.

 

</p><pre>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 : "";
}
</pre><p>

 

그리고 list.skin.php 파일에서 이렇게 하나씩 정렬하면 정렬이 잘되는데

 

여러 여분필드(형식은 같음)를 한번에 정렬해야해서 이런식으로 했는데 정렬이 제대로 안되네요.

 

해결가능한 방법이 있을까요? 몇일째 헤매고 있네요..

도와주시면 감사하겠습니다! 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
w
9년 전

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로 넣는게 맨마지막으로 할당될거라 예상되어집니다.

 

두서없이 적었지만 아마 맞을거라 생각됩니다. 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

h
hazkiryo
9년 전
답변감사합니다! 근데 잘 이해가 안되네요..
혹시 코드로 적어주실 수 있을까요?

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인