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

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

QA

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

본문

여분필드 wr_2 를 사용해서 체크박스로 만든 후

 

리스트에서는 체크된 게시물만 보이게 하고, 관리자는 모든 게시물을 볼 수 있게 하려고 하는데...

 

/skin/board/스킨명/write.php

<code>

<?php

// 비밀글 체크 상태 유무 베껴온 코드...

$open = '';

if( strstr($write['wr_2'], 'open') ) {

    $open = 'checked';
}

?>

<tr>
    <th scope="row">공개여부</th>
    <td><input type="checkbox" name="wr_2" value="open" id="wr_open" <?php echo $open; ?>><label for="wr_open">공개여부</label></td>
</tr>
</code>

 

write.php 페이지에 추가를 했는데...

 

리스트에서는 어떻게 추가를 해야할까요...??
 

리스트가 시작되는 for 구문안에서

 

if( $is_admin && $list[$i]['wr_2'] !== 'open' ) 관리자이면서 wr_2가 체크되어있지 않으면 모두 노출

 

else 체크된 게시물만 노출

 

글쓰기 페이지에서 체크시 open 출력

 

이렇게 구현하고 싶은데 머리가 안돌아가네요ㅠㅠㅠ

 

 

이 질문에 댓글 쓰기 :

답변 2

list.skin.php와 view.skin.php로 간단히 수정하시는 것도 좋으나

게시글 카운트도 정확히 내야하고 페이지 노출 수를 정확하게 하시려면

list.php 에서 코드를 손 보시는 것이 조금 더 낫습니다.

 

예)

1. $stx = trim($stx); 이 시작되는 라인 위 쪽에 아래 코드를 삽입


$sql_search_add = "";
if ($bo_table=='적용하실게시판명' && !$is_admin){
    $sql_search_add .= " and wr_2 != '' ";
}

 

2. 아래 코드 {$sql_search_add} 추가


$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} {$sql_search_add} ";

 

3. 아래 코드 {$sql_search_add} 추가


if ($sca || $stx) {
    $sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_search_add} {$sql_order} limit {$from_record}, $page_rows ";
} else {
    $sql = " select * from {$write_table} where wr_is_comment = 0 {$sql_search_add} ";

아... 일이 커지는 거였네요;;

전 그냥 여분필드를 써서

관리자는 모든 게시물 볼 수 있게 하고,

비회원, 회원은 체크된 게시물만 볼 수 있게 하려고 했던건데...

list.php 를 건드려야하는거면....ㅠㅠㅠㅠ

혹시 한가지 더 여쭤봐도 될까요...??

카테고리 사용중인데... 해당 카테고리로 sort 할때는 페이징은 잘 되는데...

전체 카테고리로 볼때는 모든 페이징이 다 뜨고 있습니다...;;

각 페이지 클릭해보면 게시물은 없다고 나오는 상황입니다ㅠㅠㅠ

여기 추가한 부분이 페이징도 같이 해주신거 같은데... 전체카테고리에서만 페이징 적용이 안되고있네요;;ㅠㅠ

각각 카테고리 클릭시에는 페이징 적용 잘 되고 있습니다...


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

list.php 71번째 줄에

$total_count = $board['bo_count_write'];

이 부분을 바꿔줘야 할거 같은데....(느낌상) 개발자가 아니라서.. 대충 눈치로 짐작하는 정도인데...

어떻게 바꿔줘야 하는지를 모르겠네요;;ㅠㅠㅠㅠ


if($list[$i]['wr_2']) {
노출
} else {
    if($is_admin) {   
        관리자만 노출
    }
}

 

쉽게 가셔도 될듯합니다....

죄송합니다...;; 제가 이해가 잘 안가는데요..;;


<?php
for ( $i = 0; $i < count($list); $i++ ){
  if ( $list[$i]['wr_2'] ) {  // 공개게시물(체크된 게시물)은 누구나 볼 수 있음
    노출    <- 이부분에 뭘 넣어야 하는건가요??
  } else {
    if ( $is_admin ) {  // 비공개게시물(체크안된 게시물)은 관리자만 볼 수 있음
      관리자만 노출   <- 이부분에 뭘 넣어야 하는건가요??
    }
  }
?>
<li>
게시물 정보
</li>
<?php 
} // for 끝 
?>


<?php
for ( $i = 0; $i < count($list); $i++ ){
  if ( $list[$i]['wr_2'] ) {  // 공개게시물(체크된 게시물)은 누구나 볼 수 있음
    <li>
      게시물 정보
    </li>
  } else {
    if ( $is_admin ) {  // 비공개게시물(체크안된 게시물)은 관리자만 볼 수 있음
        <li>
          게시물 정보
        </li>
    }
  }
?>
<?php 
} // for 끝 
?>

빠른 답변 감사드립니다...

제 생각에서는 여분필드 값으로 구분지어주면 되는 작업일 줄 알았는데

생각보다 어려운 작업이었네요...ㅠㅠㅠ

제가 제대로 이해를 못해서 죄송합니다...ㅠㅠㅠ

아래 풀스택크리에이티브 님의 답변으로 적용하였습니다...ㅠㅠ

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

회원로그인

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