범위 지정해서 정렬하기 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

범위 지정해서 정렬하기 정보

범위 지정해서 정렬하기

본문

질문답변란에 어떤분이 질문을 올리셔서 간단하게 팁으로 올립니다...

파일명 : /bbs/list.php (버전 4.06.11)
----------------------------------------------------------------------------------------
원본
----------------------------------------------------------------------------------------
.....
// 정렬
// 인덱스 필드가 아니면 정렬에 사용하지 않음
//if (!$sst || ($sst && !(strstr($sst, 'wr_id') || strstr($sst, "wr_datetime")))) {
if (!$sst)
{
    $sst  = "wr_num, wr_reply";
    $sod = "";
}
$sql_order = " order by $sst $sod ";

if ($sca || $stx)
{
    $sql = " select distinct wr_parent from $write_table where $sql_search $sql_order limit $from_record, $board[bo_page_rows] ";
}
else
{
    $sql = " select * from $sql_search_range wr_is_comment = 0 $sql_order limit $from_record, $board[bo_page_rows] ";
}
$result = sql_query($sql);
.....
========================================
--------------------------------------------------------------------------------------------
수정본
--------------------------------------------------------------------------------------------

// 정렬
// 인덱스 필드가 아니면 정렬에 사용하지 않음
//if (!$sst || ($sst && !(strstr($sst, 'wr_id') || strstr($sst, "wr_datetime")))) {
if (!$sst)
{
    $sst  = "wr_num, wr_reply";
    $sod = "";
}
$sql_order = " order by $sst $sod ";

if ($sca || $stx)
{
    $sql = " select distinct wr_parent from $write_table where $sql_search $sql_order limit $from_record, $board[bo_page_rows] ";
}
else
{
//범위 검색 시작
if($srl && $srh) {
$sql_search_range = " ($sst BETWEEN '".$srl."' AND '".$srh."') and ";
}
//범위 검색 끝
    $sql = " select * from $write_table where $sql_search_range wr_is_comment = 0 $sql_order limit $from_record, $board[bo_page_rows] ";
}
$result = sql_query($sql);
========================================================

제 홈피 그누보드 버전이 4.06.11이네요.. 이 버전 이후 list.php가 수정이 안되었기 때문에 최신버젼과 동일할것으로 판단됩니다..

정렬시 범위를 정하기 위해 between sql 구문을 이용했습니다.
$sst는 원래 있던 변수인데, 정렬하고자 하는 값이 들어값니다.
$srl은 제가 임의로 만든 변수인데, 정렬하고자 하는 최소값입니다.
$srh도 제가 임의로 만든 변수인데, 정렬하고자 하는 최대값입니다.

[예시]
borad라는 테이블에서 hit수가 10~50인 데이터를 내림차순으로 정리할때..
board.php?bo_table=board&sop=and&sst=wr_hit&sod=desc&sfl=&stx=&page=1&srl=10&srh=50

borad라는 테이블에서 여분필드 wr_1가 10~50인 데이터를 내림차순으로 정리할때..
board.php?bo_table=board&sop=and&sst=wr_1&sod=desc&sfl=&stx=&page=1&srl=10&srh=50

이런식으로 하면 됩니다...
이렇게 만들려면 스킨을 수정해야겠죠..
form구문안에 srl과 srh도 집어넣어줘야하고...

그럼 수고하세요~~~~
추천
1

댓글 4개

좋은 팁 감사드립니다. 제가 딱 원하는 기능입니다.
근데 조금만 더 도움을 구하겠습니다. ;;

지금 저도 wr_n을 추가필드로 쓰고 있습니다. 스킨도 만들어 올렸습니다.( http://sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=9334 )

근데 제가 지금 해결을 못하고 있는 부분이 추가한 필드가 있는 게시물을 따로 정렬하는 거거든요.
예를 들면 wr_9를 장소로 해서 장소1, 장소2 등으로 하고는 나중에 wr_9의 입력내용 중 장소2에 해당하는 게시물만 정렬하려고 합니다.

단순하게 생각해서
http://www.garakfestival.com/30th/bbs/board.php?bo_table=mc00&wr_9=장소2
해봤더니 역시 안되더군요. 무얼 추가해야 하는지 알 수 없을까요?

그리고 혹시
http://www.garakfestival.com/30th/bbs/board.php?bo_table=mc00&sca=전야제행사&wr_9=장소2
이런 식으로 복합정렬도 될 수 있다면 더욱 좋겠습니다. -_-;;;;

우선 아쉬운대로 전자만이라도 할 수 있는 방법을 아시는 고수분이 계시다면 꼭 좀 조언 부탁드립니다. 꾸벅~
아참 그리고 본문 내용도 제가 필요한 기능이라 해봤는데 아직까진 작동이 안되는군요-_-;;;

wr_2 ~ wr_6까지 각각 4월12 ~ 4월16일의 행사시간을 13:30 이런 식으로 인풋시켰거든요.
그래서 가령 4월13일(wr_3)에 일정이 잡힌 행사들만 따로 뽑아내서 시간순으로 정렬을 하고자 하는데 본문의 팁이 제가 볼 땐 거의 제격인데 말이죠. 혹시 제가 빼먹은 게 있는건지요... (독학의 비애ㅠㅠ)

해당게시판 : http://www.garakfestival.com/30th/bbs/board.php?bo_table=mc00
1.
http://www.garakfestival.com/30th/bbs/board.php?bo_table=mc00&wr_9=장소2
==> http://www.garakfestival.com/30th/bbs/board.php?bo_table=mc00&sfl=wr_9&stx=시가지
참고로 기존 검색을 이용하는거라서 검색어가 '시'일 경우라도 시가지가 검색됨...

2.
http://www.garakfestival.com/30th/bbs/board.php?bo_table=mc00&sca=전야제행사&wr_9=장소2
==> http://www.garakfestival.com/30th/bbs/board.php?bo_table=mc00&sca=전야제행사&sfl=wr_9&stx=시가지
이것도 기존 검색이용~~

3.http://www.garakfestival.com/30th/bbs/board.php?bo_table=mc00
==> http://www.garakfestival.com/30th/bbs/board.php?bo_table=mc00&sst=wr_2&sod=desc&srl=00:00&srh=24:00
 http://www.garakfestival.com/30th/bbs/board.php?bo_table=mc00&sca=전야제행사&sst=wr_2&sod=desc&srl=00:00&srh=24:00
이 방법은 위에 제가 수정한 범위검색을 이용한 방법입니다.. 범위를 찾는 동시에 정렬이 됩니다.
&sst는 찾아서 정렬하고자 하는 필드명입니다.
&sca는 정해진 분류에서 찾고자할때 쓰면 됩니다.. 전체에서 찾고자 할때는 안써도 됩니다..
&sod는 내림차순과 올림차순을 설정하는 부분입니다.. desc는 내림차슨 asc는 올림차순입니다.
&srl은 범위를 지정할때 최소값입니다..
&srh는 번위를 지정할때 최대값입니다..
여기서 srl과 srh을 00:00 과 24:00으로 설정해서 하루전부를 검색되게 만들었습니다..
만약에 10:00 과 12:00이면 이사이에 있는 데이터만 검색되어서 정렬되겠죠~~~

제가 아는 한도내에서 설명했는데 잘 이해하셨나 모르겠네요...
제가 지구인님 홈피에서 테스트를 해봤는데, 잘됩니다.... 소스도 본문처럼 수정을 하신것 같아 그냥 위 주소처럼 검색되도록 폼만 만들면 될것 같네요..

그럼 수고하세요~~~
전체 3,310 |RSS
그누4 팁자료실 내용 검색

회원로그인

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