신규 db에서 개수를 구해서 가져오고 싶습니다.

신규 db에서 개수를 구해서 가져오고 싶습니다.

QA

신규 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;
}


변수 지정은 안되어 있습니다.
그래서 말씀하신대로 $를 삭제하고 하니 db테이블은 나옵니다...^^
그런데 역시나 comm_mb_id와 comm_code는 못 불러옵니다...ㅠ.ㅠ
현재 comm_mb_id를 mb_id로 변경하면 회원 id는 불러오는데 g5_comment_history 테이블의 comm_code를 불러오지 못하고 있습니다.

게시글 원글의 임의코드가 comm_code 인거 같은데,
임의코드를 어떤 형태로 만드셨을까요?
올려주신 코드에는 comm_code를 가져오는 부분이 없습니다.

아...이 부분이 좀 복잡하게 돼 있는데요...^^
게시글 작성할 때 글 제목에 제가 여분필드를 이용해서 넣게 만들었어요.
그 후 댓글을 달면 임의코드가 g5_comment_history에서 comm_mb_id필드에는 회원id를 comm_code필드에는 임의코드를 저장하게 만들었거든요.
그래서 g5_comment_history에서 같은 id에 동일 임의코드가 4개 들어가면 동일 임의코드가 들어간 게시글에는 댓글을 못 쓰게 하려는 거거든요.

바쁘실텐데 계속 답변 달아주셔서 대단히 감사합니다.
mb_id는 comm_mb_id필드로 wr_id는 comm_id필드로... 테이블이 구성되어 있습니다.
bo_table은 게시판 만들 때 게시판명이 들어가는 거 아닌가요?? bo_table이 들어가는 특별한 이유가 있나요??
g5_comment_history의 경우 관리자가 따로 댓글의 db를 축적해서 excel로 출력할 수 있게 만든 테이블이거든요...

bo_table 과 wr_id 를 통해 어떤 게시판의 어떤 원글인지를 파악할 수 있고,
g5_comment_history TABLE 에 댓글 작성 시 회원아이디, 게시판 아이디, 원글 아이디 정보를 보관해 놓으면

write_comment_update.head.skin.php  파일에서 아래와 같이 댓글의 갯수를 파악할 수 있습니다.

$sql = "select count(*) as cnt from g5_comment_history where comm_mb_id = '{$mb_id}' and bo_table = '{$bo_table}' and wr_id = '{$wr_id}'";


$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)로 수정하여 비교 연산을 올바르게 함.

 

이렇게 하시면 되지 않을까 합니다

다음과 같이 시도해 볼 수 있을 것 같습니다


$sql = "SELECT COUNT(*) AS cnt FROM {$g5_comment_history} WHERE comm_mb_id = '{$comm_mb_id}' AND comm_code = '{$comm_code}'";
$result = sql_query($sql);
$row = sql_fetch_array($result);
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;
}

현재 댓글을 달면

== view 페이지에서 작업하는 듯하네요.

 

 

g5_comment_history가 실 테이블 이름인가요?

 

select count(*) from g5_comment_history

where comm_mb_id='$member['mb_id']}'

and comm_code='{$view['코드컬럼']}'

 

으로 한번 해 보세요.

 

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

회원로그인

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