게시물에 관리자가 쓴 코멘트가 있을 경우 리스트에서 표시하기...

게시물에 관리자가 쓴 코멘트가 있을 경우 리스트에서 표시하기...

QA

게시물에 관리자가 쓴 코멘트가 있을 경우 리스트에서 표시하기...

본문

안녕하세요.

게시물에 코멘트가 달렸을 때 리스트에서 아래처럼 나오게 하고 있습니다.

 

코멘트가 있으면 O, 없으면 X...

<?php if ($list[$i]['comment_cnt']) { ?>

O

<?php } else {?>
X

<?php } ?>

 

그런데 코멘트가 있으면 O가 아니라 관리자가 남긴 코멘트가 있을 경우에만 O가 되게 하고

그외 사람이 코멘트를 남기던가 코멘트 없을 경우에는 X가 되게 하고 싶은데,

방법을 모르겠네요.

 

<?php if ($w=="c" && $is_admin ) { ?>도 아닌거 같고,

이거와 위에걸 조함해 봐도 제 능력밖이라서...

 

혹시 방법 아시는분 계시면 답변 부탁드립니다.

 

감사합니다.

이 질문에 댓글 쓰기 :

답변 3


foreach ($list as $v) 
    $ids[] = $v['wr_id']; 
$ids = implode(',', $ids);
$sql = "select wr_parent from " . $write_table . " where mb_id = 'admin' and wr_is_comment = 1 and wr_parent in ( $ids ) "; 
$result = sql_query($sql);
while ($row = sql_fetch_array($result))
   $wr_parent[] = $row['wr_parent'];
foreach ($list as $v)
    $v['comment_cnt'] = in_array($v['wr_id'], $wr_parent) ? 1 : 0;
// 위에 삽입
for ($i=0; $i<count($list); $i++) {

답변 감사합니다.
올려주신 내용 적용해보니
Warning: in_array() expects parameter 2 to be array, null given in... 이런 에러가 납니다.
해당줄은
$v['comment_cnt'] = in_array($v['wr_id'], $wr_parent) ? 1 : 0;
이부분인듯 하고요.

그리고 관리자가 아닌 아무나 댓글을 남겨도 O이 되는건 마찮가지네요.

foreach ($list as $v)
    $ids[] = $v['wr_id'];
$ids = implode(',', $ids);
$sql = "select wr_parent from " . $write_table . " where mb_id = 'master' and wr_is_comment = 1 and wr_parent in( $ids ) ";
$result = sql_query($sql);
$wr_parent = array();
while ($row = sql_fetch_array($result))
  $wr_parent[] = $row['wr_parent'];
foreach ($list as $v)
    $v['comment_cnt'] = in_array($v['wr_id'], $wr_parent) ? 1 : 0;

foreach ($list as $v)
    $ids[] = $v['wr_id'];
$ids = implode(',', $ids);
$sql = "select wr_parent from " . $write_table . " where mb_id = 'master' and wr_is_comment = 1 and wr_parent in( $ids ) ";
$result = sql_query($sql);
$wr_parent = array();
while ($row = sql_fetch_array($result))
  $wr_parent[] = $row['wr_parent'];
for ($i=0; $i<count($list); $i++)
    $list[$i]['comment_cnt'] = in_array($list[$i]['wr_id'], $wr_parent) ? 1 : 0;

친절하신 답변 감사합니다.
슈와이님게서 알려주신 내용만 리스트 페이지 for ($i=0; $i<count($list); $i++) { 위에 넣고 다른건 전혀 손 안대도 되는건가요?
알려주신대로 해봤지만 여전히 관리자가 아닌 다른 사람이 댓글을 남겨도 O가됩니다.

그누보드 기본함수들을 다 몰라서 하드코딩 해볼게요.

관리자 아이디가 admin이라고 가정하고,

 

function check_cnt_admin($wr_id){

   $check = sql_fetch("select count(wr_id) as cnt from {$write_table} where mb_id='admin' and wr_is_comment='1'");

  if($check['cnt'] > 0){

   return true;

    }

return false;

}

 

위의 함수를 common.lib에 복사하시구요, for문 돌면서 리스트를 가공하는 코드 안에

$list[$i]['check_cnt_admin'] = check_cnt_admin($list[$i]['wr_id']);

 

붙여넣으신 후, 

if($list[$i]['check_cnt_admin']){

   // 관리자가 댓글 단 곳

}

 

대충 요런식으로 됩니다. 

이런 형태가 되어야 하는게 맞지요.
1개 게시물에 여러개 코멘트가 달릴수도 있으니,  관리자가 남긴 건을 하나씩 찾아야하죠.

최초 질문자님이 남기신 내용으로 보아  게시글 한개당 코멘트 무조건 한개만 가능하다는
조건하에 할수 있는 질문입니다.

답변 달아주신분이 정확하신듯합니다.


$check = sql_fetch("select count(wr_id) as cnt from {$write_table} where mb_id='admin' and wr_is_comment='1'");

에서 

$check = sql_fetch("select count(wr_id) as cnt from {$write_table} where wr_parent = '$wr_id' and  mb_id='admin' and wr_is_comment='1'");

로 " wr_parent = '$wr_id' " 추가만 해주심 될듯

답변 감사합니다.
일단 관리자 아이디가 master 입니다.

common.lib에 아래 내용을 넣고,

function check_cnt_admin($wr_id){
$check = sql_fetch("select count(wr_id) as cnt from {$write_table} where mb_id='master' and wr_is_comment='1' and wr_parent='{$wr_id}'");
if($check['cnt'] > 0){
return true;
}
return false;
}


리스트에서 불러올곳에

<?php if ($list[$i]['check_cnt_admin']) { ?>
O
<?php } else {?>
X
<?php } ?>
를 넣었고,


$list[$i]['check_cnt_admin'] = check_cnt_admin($list[$i]['wr_id']);
를 정확하게 리스트 화면 어디에 넣어야 할지 몰라서 여기 저기 다 넣어봤습니다.
그런데 정상적으로 작동이 안되는거 같습니다.

 
참고로 혹시몰라  check_cnt_admin를 check_cnt_master로 변경해서 적용도 해보았지만 작동이 안되는거 같습니다.

앗.. 수정하려다보니 대댓글달려서 수정이 안되네요

 

function 안에 하나 빼먹었습니다.

$check = sql_fetch("select count(wr_id) as cnt from {$write_table} where mb_id='admin' and wr_is_comment='1'");

이거를

$check = sql_fetch("select count(wr_id) as cnt from {$write_table} where mb_id='admin' and wr_is_comment='1' and wr_parent='{$wr_id}'");

로 고치셔서 붙여넣으시길 바랍니다.

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

회원로그인

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