여분필드(체크박스)로 체크된 게시물만 보이게 하기2

여분필드(체크박스)로 체크된 게시물만 보이게 하기2

QA

여분필드(체크박스)로 체크된 게시물만 보이게 하기2

본문

카테고리를 사용하는 게시판에

 

여분필드 wr_2 를 공개여부 체크박스로 만들어서

 

체크된 게시물은 누구나가 다 볼 수 있고,

 

체크안된 게시물은 관리자만 볼 수 있는 기능을 만들었습니다.

 

그런데 해당 카테고리로 이동시 페이징은 정상으로 작동하는데

 

전체 카테고리로 가면($sca, $stx 의 값 없이 $bo_table 로만 이동시) 페이징이 전부 노출 됩니다...;; 게시물은 숨겨놔서 없다고 뜨는 상황입니다.

 

오전에 남긴 글의 답변을 토대로 추가를 해줬는데....

 

https://sir.kr/qa/287978

 

/bbs/list.php 추가 내용

 

추가1.


// $sql_search_add 20190124 추가
$sql_search_add = '';
if ( $bo_table === 'portfolio' && !$is_admin ){
    $sql_search_add .= " and wr_2 != '' ";
}

 

수정1.


// 분류 선택 또는 검색어가 있다면
$stx = trim($stx);
if( $sca || $stx ) { 
~~~~~~~~~~~~~~~~
    // 변경후
    $sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} {$sql_search_add} "; // {$sql_search_add} 20190124 추가
 
} else {
    $sql_search = "";
    $total_count = $board['bo_count_write']; // 이거도 같이 바꿔줘야 할거 같은데...ㅠㅠㅠ
}

 

수정2.


if( $sst ) {
    $sql_order = " order by {$sst} {$sod} ";
}
 
if ($sca || $stx) {
    // 변경후
    $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 ";
}

 

 

이렇게 수정한 상태인데...

 

수정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'];

아?! 죄송합니다!!

잘됩니다...ㅠㅠㅠ

$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} ";

알려주신대로 해보지도 않고... 죄송합니다!ㅠㅠㅠ 감사드립니다!!

아 제가 답변을 못봤네요..

 


if( $sca || $stx || $bo_table == 'portfolio') { 

 

이렇게 바꿔보시겠어요?

테스트 해보고 댓글 다시 답니다..
제가 정신을 못차리고 답변을 달고 있었네요.


$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'];
	}
}

알려주신 방법으로 해도 잘 되네요!! 드디어ㅠㅠㅠㅠ 휴... 정말 감사드립니다...ㅠㅠㅠㅠㅠㅠ

근데 제가 막 만져봤을땐 {$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 이 내용도 있었어야 하는거군요...ㅠㅠㅠ

답변을 작성하시기 전에 로그인 해주세요.
전체 766
QA 내용 검색

회원로그인

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