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

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

일산사랑 11년 전 조회 8,028
여분필드 wr_1 을 추가로 이용하고 있습니다.
게시판에 여분필드에 aaa, bbb, ccc 등의 값이 있어서,
aaa를 선택하면 게시판에서 wr_1 이 aaa인 것만 불러와서 게시판 리스트를 출력하고 싶은데,
어디서 sql문을 수정할수 있는지 궁굼합니다.
댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
11년 전
where wr_1 IN ('aaa') 이것만 추가해주면 됩니다..........4랑 5랑 같은지 모르겟네요.....
어느센가 은근히 5버전에 답을 달기 시작한 ㅋ
로그인 후 평가할 수 있습니다

답변에 대한 댓글 7개

일산사랑
11년 전
감사합니다.
라인좀 알수 있을까요?

4버전이라서 모르실지 몰라서 아래에 30라인부터 56라인 옮겨볼게요
[code]
$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'];
}

[/code]
히어1
11년 전
$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 값이 자동으로 들어가집니다.
저야 한 게시판만 이렇게 쓰니 변수로 처리했지만 모든 게시판을 하기에는 권장하고싶지않네요....문제가 많을것 같아서
저도 만드는중이라 어떤 문제가 발생할지는 모르는부분,
일산사랑
11년 전
답변 감사합니다.
4버전이랑 다를지 모른다고 하셔서 4버전도 방금 다운받아서 열어 보았는데, 많은 차이는 없는거 같습니다.

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

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

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

알려주신 부분을 수정해서 실행하니
총 글이 3개 있는데, 앞에 리스트 번호가 0 -1 -2 이렇게 변하고 글들은 그대로 네요;;
히어1
11년 전
저도 잘은 모르지만 aaa 인지 bbb인지 디비가 어떻게 아나요? 그 값을 정의해줄 뭔가가 잇어야지요.....
히어1
11년 전
예를 들어 게시판 링크값을 board?bo_table=게시판&wr_1=aaa 이런식으로 준다던지........
일산사랑
11년 전
어어어......

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

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

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

감사합니다. :)
일산사랑
11년 전
소모임이라고 적혀 있어서
예를들어 aaa인 사람이 aaa인 것만 보이게 한다 이런 식인지 이해했네요 :)

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

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

 

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

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

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

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

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

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

 

</p>

<p>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 {//---------------------------------------------------------------------------------------------------------소모임 아닌경우</p>

<p>    $sql_search = "";

    $total_count = $board['bo_count_write'];

} //--------------------------------------------------------------------------------------------------------------</p>

<p> </p>

<p>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);</p>

<p> </p>

<p>

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

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

7년 전

많은 도움이 되었습니다. 감사합니다.

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

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

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

답변에 대한 댓글 1개

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

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

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

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

로그인