게시판 리스트에서 SQL문을 여분필드로 조회해서 가져오기

게시판 리스트에서 SQL문을 여분필드로 조회해서 가져오기

QA

게시판 리스트에서 SQL문을 여분필드로 조회해서 가져오기

본문

여분필드 wr_1 을 추가로 이용하고 있습니다.

게시판에 여분필드에 aaa, bbb, ccc 등의 값이 있어서,
aaa를 선택하면 게시판에서 wr_1 이 aaa인 것만 불러와서 게시판 리스트를 출력하고 싶은데,

어디서 sql문을 수정할수 있는지 궁굼합니다.

이 질문에 댓글 쓰기 :

답변 4

where wr_1 IN ('aaa') 이것만 추가해주면 됩니다..........4랑 5랑 같은지 모르겟네요.....
어느센가 은근히 5버전에 답을 달기 시작한 ㅋ

감사합니다.
라인좀 알수 있을까요?

4버전이라서 모르실지 몰라서 아래에 30라인부터 56라인 옮겨볼게요


$sop = strtolower($sop);
if ($sop != 'and' && $sop != 'or')
    $sop = 'and';

// 분류 선택 또는 검색어가 있다면
$stx = trim($stx);
if ($sca || $stx) {
    $sql_search = get_sql_search($sca, $sfl, $stx, $sop);

    // 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
    $sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
    $row = sql_fetch($sql);
    $min_spt = (int)$row['min_wr_num'];

    if (!$spt) $spt = $min_spt;

    $sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";

    // 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
    $sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";
    $result = sql_query($sql);
    $total_count = mysql_num_rows($result);
} else {
    $sql_search = "";

    $total_count = $board['bo_count_write'];
}

$sop = strtolower($sop);


02 if ($sop != 'and' && $sop != 'or')


03    $sop = 'and';


04 


05 // 분류 선택 또는 검색어가 있다면


06 $stx = trim($stx);


07 if ($sca || $stx) {  //---------------------여긴 카테고리를 클릭하거나 검색을 통해 리스트에 접근할때입니다.


08    $sql_search = get_sql_search($sca, $sfl, $stx, $sop);


09 


10    // 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)


11    $sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";


12    $row = sql_fetch($sql);


13    $min_spt = (int)$row['min_wr_num'];


14 


15    if (!$spt) $spt = $min_spt;


16 


17    $sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";


18 


19    // 원글만 얻는다. (코멘트의 내용도 검색하기 위함)


20    $sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";


21    $result = sql_query($sql);


22    $total_count = mysql_num_rows($result);


23 } else { //------------------여긴 그냥 게시판 링크로 들어올때니까 여기서 해야겠지요.
24    $sql_search = "";
25 
26    $total_count = $board['bo_count_write'];
27 }


즉 24줄 부터 26줄에것을 수정해야합니다.
저같은 경우

if ($bo_table == "mb25" && $member[mb_team]) { //-----------------------------------------------------------------소모임일경우시작
$sql = " select distinct wr_parent from $write_table where ca_name IN ('$member[mb_team]') ";
    $result = sql_query($sql);
    $total_count = mysql_num_rows($result);
} else {//---------------------------------------------------------------------------------------------------------소모임 아닌경우

    $sql_search = "";
    $total_count = $board[bo_count_write];
} //--------------------------------------------------------------------------------------------------------------소모임일경우끝

이렇게 하면 일단 걸러집니다. 근데 문제가 잇지요......걸러지기는 하나 페이징은 안걸러진 게시물까지 모두 처리됩니다.
그래서 페이징 처리하는부분에서 한번더 쿼리를 줍니다.
4버전이니 참고만 하심이........

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 ($bo_table == "mb25" && $member[mb_team]) { //---------------------------소모임일경우시작
$sql = " select * from $write_table where ca_name IN ('$member[mb_team]') and wr_is_comment = 0 $sql_order limit $from_record, $board[bo_page_rows] ";
}else{ //---------------------------소모임 아닌경우
    $sql = " select * from $write_table where wr_is_comment = 0 $sql_order limit $from_record, $board[bo_page_rows] ";
}//---------------------------소모임일경우끝
}
$result = sql_query($sql);


ca_name IN ('$member[mb_team]') 이부분을 wr_1 IN ('aaa') 로 바꿔주심 될듯.......
저같은 경우는 회원 필드 mb_team 에 게시판 카테고리와 일치하는 문자가 들어잇습니다.
그러니 필드에 문자가 잇는 사람들은 mb25에 접근하면 자동으로 카테고리가 본인에 맞춰 분리가 되겟지요. 글을쓸때도 글쓰는부분에 hidden시킨 카테고리값을 mb_team 값이 자동으로 들어가집니다.
저야 한 게시판만 이렇게 쓰니 변수로 처리했지만 모든 게시판을 하기에는 권장하고싶지않네요....문제가 많을것 같아서
저도 만드는중이라 어떤 문제가 발생할지는 모르는부분,

답변 감사합니다.
4버전이랑 다를지 모른다고 하셔서 4버전도 방금 다운받아서 열어 보았는데, 많은 차이는 없는거 같습니다.

알려주신 방법대로 지금 수정하고 있는데, 안되네요..

우선 지금 알려주것중에  wr_1 IN ('aaa')  이것이요..
제가 단순하게 생각한 것은 sql = "....... where wr_1 = '$wr_1' ";
이런 식이거든요.. aaa가 변수가 아니라, sql에서 불러오는 조건을 $wr_1에 aaa 인지 bbb 인지에 따라서 그에 맞는 wr_1 에 있는 리스트를 불러오는 거라서요..

제가 생각한게 맞는지 모르겠네요..

알려주신 부분을 수정해서 실행하니
총 글이 3개 있는데, 앞에 리스트 번호가 0 -1 -2 이렇게 변하고 글들은 그대로 네요;;

어어어......

위에꺼만 수정했을때 안되었는데, 아래꺼도 수정하니 되네요 ㅎㅎㅎ
좀더 테스트 해봐야 겠네요.

처음꺼에 where IN 이거는 안먹어서
where ca_name IN ('$member[mb_team]')
부분을
where wr_1 = '{$wr_1}'로 변경했습니다.

두번째꺼는 where IN 먹히는거 같구요..

감사합니다. :)

/bbs/list.php
화일의 $sql_search 변수를 수정하시면 됩니다.
제가 답변했던 답글에 댓글로 물어보셨더군요.
 
저는 그누보드5의 소스를 수정해서 사용중입니다.
아래 글의 답글에 세계지역별로 목록보는 방식
필드가 wr_1 이 아니라 region_n 필드를 새로 만들어서 사용중입니다.
 
$sql_search <<== 요넘을 잘 활용하시면 됩니다.

감사합니다.
알려주신데로 list.php를 열어서 $sql_search 변수로 검색을 하니
34 라인에 // 분류 선택 또는 검색어가 있다면
요부분이 나오네요..

역시 막막하네요;;
멍허니 지금 보고 있는데, 감이 안오네요 ;;

위글을 참고하여 저도 수정해보았는데 잘 안되네요 뭐가 문제일까요

 

url: http://localhost/bbs/board.php?bo_table=color&wr_1=ocean

- wr_1: 필드에 ocean 이란 값이 들어가있는글이 여러개 있습니다.

해당 필드값이 일치하는 글들만 불러오려고 하는데

제대로 불러오지도 않고, 아래 게시글 카운터도 1로 변경되고서는 엉뚱하게 작동합니다.

그런데 코드 수정한후에 url 문은 좀 괴상하게 변경되긴 하더라구요.

원글이 오래되었지만, 보게되시면 도움좀 ㅜㅜ

 


if ($bo_table == "color" ) { //color 라는 게시판이 있음
    $sql = " select distinct wr_parent from $write_table where wr_1 = '{$wr_1}' ";
    $result = sql_query($sql);
    $total_count = sql_num_rows($result);
} else {//---------------------------------------------------------------------------------------------------------소모임 아닌경우
    $sql_search = "";
    $total_count = $board['bo_count_write'];
} //--------------------------------------------------------------------------------------------------------------
 
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 ($bo_table == "color" ) { //---------------------------소모임일경우시작
$sql = " select * from $write_table where wr_1 = '{$wr_1}' and wr_is_comment = 0 $sql_order limit $from_record, $board[bo_page_rows] ";
}else{ //---------------------------소모임 아닌경우
    $sql = " select * from $write_table where wr_is_comment = 0 $sql_order limit $from_record, $board[bo_page_rows] ";
}//---------------------------소모임일경우끝
}
$result = sql_query($sql);
 
답변을 작성하시기 전에 로그인 해주세요.
전체 0 | RSS
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

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