신규 db에서 개수를 구해서 가져오고 싶습니다. 채택완료
현재 댓글을 달면 새로 만든 테이블 $g5_comment_history에 회원 id와 게시글(원글)의 임의 코드가 저장되게 만들었습니다.
그렇게 해서 comm_mb_id와 comm_code를 비교해서 4개까지만 댓글을 작성 가능하게 만들고 싶은데 $g5_comment_history에서 같은 값을 가진 개수를 가져오지 못하고 있습니다.
아래 쿼리의 어떤 문제가 있을까요?? 고수님들의 도움 부탁드립니다....ㅠ.ㅠ
write_comment_update.skin.php
</p>
<p>$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);</p>
<p>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;
};</p>
<p>
답변 4개
write_comment_update.skin.php 파일보다는
write_comment_update.head.skin.php 파일을 만들어서, 댓글을 등록하기 전에
갯수를 체크하는 게 좋을 것 같습니다.
또한 $g5_comment_history['comm_mb_id']는 $mb_id로 수정하시면 될 것 같고,
게시글 원글의 임의코드를 만드셨다고 했는데, 해당 게시글 원글의 임의 코드를 가져오는 부분이 있어야 할 것 같네요.
</p>
<pre>
<code>$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;
}</code>
</pre>
<p><code>
답변에 대한 댓글 8개
변수가 지정이 되어 있지 않다면 그냥 g5_comment_history 로 사용하셔야 할 듯 합니다.
그래서 말씀하신대로 $를 삭제하고 하니 db테이블은 나옵니다...^^
그런데 역시나 comm_mb_id와 comm_code는 못 불러옵니다...ㅠ.ㅠ
현재 comm_mb_id를 mb_id로 변경하면 회원 id는 불러오는데 g5_comment_history 테이블의 comm_code를 불러오지 못하고 있습니다.
임의코드를 어떤 형태로 만드셨을까요?
올려주신 코드에는 comm_code를 가져오는 부분이 없습니다.
게시글 작성할 때 글 제목에 제가 여분필드를 이용해서 넣게 만들었어요.
그 후 댓글을 달면 임의코드가 g5_comment_history에서 comm_mb_id필드에는 회원id를 comm_code필드에는 임의코드를 저장하게 만들었거든요.
그래서 g5_comment_history에서 같은 id에 동일 임의코드가 4개 들어가면 동일 임의코드가 들어간 게시글에는 댓글을 못 쓰게 하려는 거거든요.
comm_mb_id, bo_table, wr_id 이렇게 3개의 필드를 가지고 구분하는 게 좋을 것 같네요.
mb_id는 comm_mb_id필드로 wr_id는 comm_id필드로... 테이블이 구성되어 있습니다.
bo_table은 게시판 만들 때 게시판명이 들어가는 거 아닌가요?? bo_table이 들어가는 특별한 이유가 있나요??
g5_comment_history의 경우 관리자가 따로 댓글의 db를 축적해서 excel로 출력할 수 있게 만든 테이블이거든요...
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}'";
댓글을 작성하려면 로그인이 필요합니다.
현재 댓글을 달면
== view 페이지에서 작업하는 듯하네요.
g5_comment_history가 실 테이블 이름인가요?
select count(*) from g5_comment_history
where comm_mb_id='$member['mb_id']}'
and comm_code='{$view['코드컬럼']}'
으로 한번 해 보세요.
댓글을 작성하려면 로그인이 필요합니다.
</p>
<p>$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;</p>
<p>
echo 쿼리를 출력해서 정상적으로 쿼리가 완성되는지를 보셔야 할듯 합니다.
답변에 대한 댓글 4개
말씀하신대로 쿼리 출력해보니 comm_mb_id와 comm_code값뿐만아니라
$g5_comment_history 테이블을 못 찾아가네요...ㅠ.ㅠ
대신 그냥 테이블명을 쓰세요.
댓글을 작성하려면 로그인이 필요합니다.
변수 가 올바르게 작성이 되지 않아 아래와 같이 수정 해봤습니다
</p>
<p>$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)로 수정하여 비교 연산을 올바르게 함.
이렇게 하시면 되지 않을까 합니다
답변에 대한 댓글 2개
말씀하신 부족한 부분은 수정을 하고 echo $row['cnt']; 넣어서 확인해봐도 개수를 구해오지 못하네요...ㅠ.ㅠ
[code]
$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;
}
[/code]
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
말씀하신대로 했는데 여전히 $g5_comment_history db테이블 자체를 가져오지 못하네요...ㅠ.ㅠ