신규 db에서 개수를 구해서 가져오고 싶습니다.
본문
현재 댓글을 달면 새로 만든 테이블 $g5_comment_history에 회원 id와 게시글(원글)의 임의 코드가 저장되게 만들었습니다.
그렇게 해서 comm_mb_id와 comm_code를 비교해서 4개까지만 댓글을 작성 가능하게 만들고 싶은데 $g5_comment_history에서 같은 값을 가진 개수를 가져오지 못하고 있습니다.
아래 쿼리의 어떤 문제가 있을까요?? 고수님들의 도움 부탁드립니다....ㅠ.ㅠ
write_comment_update.skin.php
$sql = " select count(*) as cnt from {$g5_comment_history} where comm_mb_id = '{$g5_comment_history[comm_mb_id]}' and comm_code = '{$g5_comment_history[comm_code]}' ";
$row = sql_fetch($sql);
if ($row[cnt] > "4" ) {
sql_query($sql2); //작성한 댓글 삭제
sql_query(" update {$write_table} set wr_comment = wr_comment - 1, wr_last = '{$row['wr_last']}' where wr_id = '{$write['wr_parent']}' ");
alert('회원별 동일 종류의 댓글은 최대 4번까지만 가능합니다.');
exit;
};
답변 4
write_comment_update.skin.php 파일보다는
write_comment_update.head.skin.php 파일을 만들어서, 댓글을 등록하기 전에
갯수를 체크하는 게 좋을 것 같습니다.
또한 $g5_comment_history['comm_mb_id']는 $mb_id로 수정하시면 될 것 같고,
게시글 원글의 임의코드를 만드셨다고 했는데, 해당 게시글 원글의 임의 코드를 가져오는 부분이 있어야 할 것 같네요.
$sql = "SELECT COUNT(*) AS cnt FROM {$g5_comment_history} WHERE comm_mb_id = '{$comm_mb_id}' AND comm_code = '{$comm_code}'";
$row = sql_fetch($sql);
if ($row['cnt'] >= 4) {
//sql_query($sql2); // 작성한 댓글 삭제 (댓글 등록전에 체크하여, 굳이 등록했다 삭제하는 번거로움을 없앱니다.
//sql_query("UPDATE {$write_table} SET wr_comment = wr_comment - 1, wr_last = '{$row['wr_last']}' WHERE wr_id = '{$write['wr_parent']}'");
alert('회원별 동일 종류의 댓글은 최대 4번까지만 가능합니다.');
exit;
}
$sql = " select count(*) as cnt from {$g5_comment_history} where comm_mb_id = '{$g5_comment_history[comm_mb_id]}' and comm_code = '{$g5_comment_history[comm_code]}' ";
echo $sql;
echo 쿼리를 출력해서 정상적으로 쿼리가 완성되는지를 보셔야 할듯 합니다.
!-->변수 가 올바르게 작성이 되지 않아 아래와 같이 수정 해봤습니다
$sql = "SELECT COUNT(*) AS cnt FROM {$g5_comment_history} WHERE comm_mb_id = '{$comm_mb_id}' AND comm_code = '{$comm_code}'";
$row = sql_fetch($sql);
if ($row['cnt'] > 4) {
sql_query($sql2); // 작성한 댓글 삭제
sql_query("UPDATE {$write_table} SET wr_comment = wr_comment - 1, wr_last = '{$row['wr_last']}' WHERE wr_id = '{$write['wr_parent']}'");
alert('회원별 동일 종류의 댓글은 최대 4번까지만 가능합니다.');
exit;
}
1. $g5_comment_history[comm_mb_id]를 $comm_mb_id로 수정
2. $g5_comment_history[comm_code]를 $comm_code로 수정
3. $row[cnt]를 $row['cnt']로 수정하여 배열 요소에 접근 하도록 함.
4. if ($row[cnt] > "4")를 if ($row['cnt'] > 4)로 수정하여 비교 연산을 올바르게 함.
이렇게 하시면 되지 않을까 합니다
!-->현재 댓글을 달면
== view 페이지에서 작업하는 듯하네요.
g5_comment_history가 실 테이블 이름인가요?
select count(*) from g5_comment_history
where comm_mb_id='$member['mb_id']}'
and comm_code='{$view['코드컬럼']}'
으로 한번 해 보세요.