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

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

coDribble 6년 전 조회 4,846

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

 

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

 

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

 

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

 

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

 

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

 

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

 

https://sir.kr/qa/287978

 

/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개

채택된 답변
+20 포인트
세크티
6년 전
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM `g5_write_portfolio` WHERE  wr_2 <> '' ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

c
coDribble
6년 전
답변 감사드립니다... 말씀해주신대로 적용해보니 페이징이 사리지네요...ㅠㅠㅠ
c
coDribble
6년 전
아?! 죄송합니다!!

잘됩니다...ㅠㅠㅠ

$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개

c
coDribble
6년 전
말씀해주신대로 해보니 페이징이 전체카테고리에서만 사라지네요;;ㅠㅠㅠ
c
coDribble
6년 전
https://sir.kr/g5_tip/10200

얼마전에 올라온 팁게시글 보면서 $total_count 부분도 수정해야할거 같아서 해보려고 했었는데....

잘 안되더라구요...ㅠㅠ;;
c
coDribble
6년 전
위에 답변주신 세크티 님이 알려준대로 하니까 잘 됩니다...

오전부터... 신경써주셔서 감사합니다!!ㅠㅠㅠ
F
FullstackCreative
6년 전
테스트 해보고 댓글 다시 답니다..
제가 정신을 못차리고 답변을 달고 있었네요.

[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]
c
coDribble
6년 전
알려주신 방법으로 해도 잘 되네요!! 드디어ㅠㅠㅠㅠ 휴... 정말 감사드립니다...ㅠㅠㅠㅠㅠㅠ

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

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

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

로그인