여분필드(체크박스)로 체크된 게시물만 보이게 하기2 채택완료
카테고리를 사용하는 게시판에
여분필드 wr_2 를 공개여부 체크박스로 만들어서
체크된 게시물은 누구나가 다 볼 수 있고,
체크안된 게시물은 관리자만 볼 수 있는 기능을 만들었습니다.
그런데 해당 카테고리로 이동시 페이징은 정상으로 작동하는데
전체 카테고리로 가면($sca, $stx 의 값 없이 $bo_table 로만 이동시) 페이징이 전부 노출 됩니다...;; 게시물은 숨겨놔서 없다고 뜨는 상황입니다.
오전에 남긴 글의 답변을 토대로 추가를 해줬는데....
/bbs/list.php 추가 내용
추가1.
</p>
<p>// $sql_search_add 20190124 추가
$sql_search_add = '';
if ( $bo_table === 'portfolio' && !$is_admin ){
$sql_search_add .= " and wr_2 != '' ";
}</p>
<p>
수정1.
</p>
<p>// 분류 선택 또는 검색어가 있다면</p>
<p>$stx = trim($stx);</p>
<p>if( $sca || $stx ) { </p>
<p>~~~~~~~~~~~~~~~~</p>
<p> // 변경후</p>
<p> $sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} {$sql_search_add} "; // {$sql_search_add} 20190124 추가</p>
<p> </p>
<p>} else {</p>
<p> $sql_search = "";</p>
<p> $total_count = $board['bo_count_write']; // 이거도 같이 바꿔줘야 할거 같은데...ㅠㅠㅠ</p>
<p>}</p>
<p>
수정2.
</p>
<p>if( $sst ) {</p>
<p> $sql_order = " order by {$sst} {$sod} ";
}</p>
<p> </p>
<p>if ($sca || $stx) {</p>
<p> // 변경후
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_search_add} {$sql_order} limit {$from_record}, $page_rows "; // {$sql_search_add} 20190124 추가
} else {
$sql = " select * from {$write_table} where wr_is_comment = 0 {$sql_search_add} "; // {$sql_search_add} 20190124 추가
if(!empty($notice_array))
$sql .= " and wr_id not in (".implode(', ', $notice_array).") ";
$sql .= " {$sql_order} limit {$from_record}, $page_rows ";
}</p>
<p>
이렇게 수정한 상태인데...
수정1. 부분에서 $total_count = $board['bo_count_write']; 이 부분도
분기를 태워서
if( $bo_table === 'portfolio' ) {
wr_2가 체크된 게시물의 갯수를 $total_count 에 대입
} else {
$total_count = $board['bo_count_write'];
}
이렇게 해야할거 같은데... 빨간 글씨 부분을 어떻게 갯수를 구해오는지 알 수 있을까요...??ㅠㅠㅠㅠ
답변 2개
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM `g5_write_portfolio` WHERE wr_2 <> '' "; $row = sql_fetch($sql); $total_count = $row['cnt'];
답변에 대한 댓글 2개
잘됩니다...ㅠㅠㅠ
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM `g5_write_portfolio` WHERE wr_2 <> '' ";
이렇게 알려주셨는데... 나름 기존에 있는 방식대로 해보려고 아래처럼 했더니 안되는거였어요...
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search_add} ";
알려주신대로 해보지도 않고... 죄송합니다!ㅠㅠㅠ 감사드립니다!!
댓글을 작성하려면 로그인이 필요합니다.
아 제가 답변을 못봤네요..
</p>
<p><code>if</code><code>( </code><code>$sca</code> <code>|| </code><code>$stx</code> || $bo_table == 'portfolio'<code>) { </code></p>
<p>
이렇게 바꿔보시겠어요?
답변에 대한 댓글 5개
얼마전에 올라온 팁게시글 보면서 $total_count 부분도 수정해야할거 같아서 해보려고 했었는데....
잘 안되더라구요...ㅠㅠ;;
오전부터... 신경써주셔서 감사합니다!!ㅠㅠㅠ
제가 정신을 못차리고 답변을 달고 있었네요.
[code]
$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']})) ";
// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
// 라엘님 제안 코드로 대체 http://sir.kr/g5_bug/2922
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} {$sql_search_add}";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
echo $sql;
/*
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";
$result = sql_query($sql);
$total_count = sql_num_rows($result);
*/
} else {
if ($bo_table=='work'){
$sql_search = " wr_is_comment = 0 ";
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} {$sql_search_add}";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
echo $sql;
} else {
$sql_search = "";
$total_count = $board['bo_count_write'];
}
}
[/code]
근데 제가 막 만져봤을땐 {$sql_search_add} 이게 안먹히는거 같았는데...;; 뭔가 구문쓸때 잘못된거였겠죠....??
전 직접 저런식으로 db를 가져오는건 짜지를 못해서...ㅠㅠㅠ
else{
$sql_search = "";
if($bo_table === 'portfolio'){
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search_add}";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
}
}
전 이렇게 썼었는데... 안돼가지구...ㅠㅠㅠ $sql_search 이 내용도 있었어야 하는거군요...ㅠㅠㅠ
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인