게시판명 > 분류명 일 경우 분류 당 게시 글 갯수 제한 방법 문의 드립니다. 채택완료
안녕하세요..고수님들
게시판을 생성해서 등록할 수 있는 갯수를 제한하느라고 write.skin.php에 아래와 같은 코드로 사용 중인데요.
</p>
<p>if ($w != 'u'){
if($board['bo_count_write'] >=3 ) {
alert('본 게시판은 3개까지만 등록할 수 있습니다.');
}
}
이 것을 게시판이 아닌 분류(ca_name) 별로 제한 하려고 합니다. 위의 코드 대신 어떻게 만들어야 하는지 도움 주시면 고맙겠습니다.
답변 3개
extend/user.config.php
</p>
<p>function hook_write_update_before($board, $wr_id, $w, $qstr) {
global $g5, $ca_name;</p>
<p> </p>
<p> if(empty($w) == false || $board['bo_use_category'] != '1') {
return true;
}</p>
<p> </p>
<p> $cnt = 3;</p>
<p> </p>
<p> $tbl = $g5['write_prefix'] . $board['bo_table'];
$sql = " select count(1) cnt from ${tbl} where wr_is_comment = 0 and ca_name = '{$ca_name}' ";
$data = sql_fetch($sql);</p>
<p> </p>
<p> if ($data['cnt'] >= $cnt) {
alert('Request Unavailable (limit count reached: ' . $cnt . ')');</p>
<p> return false;
}</p>
<p> </p>
<p> return true;
}</p>
<p> </p>
<p>add_event('write_update_before', 'hook_write_update_before', 10, 4);</p>
<p>
답변에 대한 댓글 5개
말씀하신 extend에 적용하면 모든 게시판에 영향을 주는 것은 아닌지요?? 한 개의 게시판만 특정하여 적용하려 해도 위에 코드로 되는 것인지 궁금합니다..
free (g5_write_free) 인 경우만 허용하려면 다음처럼 수정해볼수 있습니다.
[code]
if(empty($w) == false || $board['bo_use_category'] != '1' || $board['bo_table'] != 'free') {
return true;
}
[/code]
적용해 보고 의문점이 생기면 댓글 남겨 놓겠습니다.^^
댓글을 작성하려면 로그인이 필요합니다.
분류리스트에서 3회 이상인 분류를 제거하고 남은 분류만 선택 가능 하게 하면 됩니다
1. write.skin.php 상단 php부분에 넣기
$caStr = $board['bo_category_list'];
$qq =sql_query("SELECT ca_name, count(*) as cnt FROM $write_table group by ca_name", true);
while($row=sql_fetch_array($qq) ){
if($row['cnt'] >=3) $caStr = str_replace($row['ca_name'],'', $caStr); //3회 이상은 제거
}
2. 하단 자바스크립트 부분에 넣기
castr="<?php echo $caStr;?>";
$(function(){
$('#ca_name').change( function(){ caname = $(this).val();
if( castr.indexOf(caname) <0) {alert("등록 횟수를 초과한 분류"); $(this).val(''); }
});
});
댓글을 작성하려면 로그인이 필요합니다.
</p>
<p>if($ca_name) {</p>
<p> $sql = "SELECT count(*) as cnt FROM {$write_table} where ca_name='$ca_name' ";</p>
<p> $result = sql_query($sql);</p>
<p> while($row = sql_fetch_array($result)) {</p>
<p> if($row['cnt'] >= 3) {</p>
<p> alert($ca_name.'분류는 3개까지만 등록할 수 있습니다.');</p>
<p> }</p>
<p> }</p>
<p>}</p>
<p>
답변에 대한 댓글 8개
알려 주신 코드가 각각의 분류 별로 3개 까지만 등록이 가능한 것을 의미하는 것인가요?
예를 들면 free라는 게시판에 자유/행복/기쁨 이라는 3개의 분류를 사용한다면 글 쓸 때 자유라는 카테고리에 3 개까지만 글을 등록할 수 있고 마찬가지로 행복이라는 카테고리에도 4번째 글을 등록할 수 없게 하는 것인지요??
각 분류별 3개까지만 등록.
오늘 출근해서 적용해 보니 글쓰기는 제한없이 계속 되었고 게시글을 수정하려고 하니
'분류는 3개까지만 등록할 수 있습니다.' 라는 메세지가 뜨고 수정도 안 되는 상황이 되네요.
어디가 문제였을까요??
감사합니다.
아래 소스를 추가한 후 업로드 해보세요.
if($w == '' && $ca_name) {
$sql = "SELECT count(*) as cnt FROM {$write_table} where ca_name='$ca_name' ";
$result = sql_query($sql);
while($row = sql_fetch_array($result)) {
if($row['cnt'] >= 3) {
alert($ca_name.'분류는 3개까지만 등록할 수 있습니다.');
}
}
}
추가로 업로드 하니 원하는 결과를 얻었습니다. 다만, 앞에 말씀드린 것처럼 수정이 안 되고
'분류는 3개까지만 등록할 수 있습니다.' 라는 경고 문구만 나옵니다..
게시 글이 2개 일 때는 수정이 가능하네요..
말씀하신 위에 내용은 이해는 하는데요.. 수정이라는 것이 새 글을 쓴다는 의미로 판독이 되는 것은 아닐까요??
무지해서 무식한 말 해 봅니다..ㅎ
다른 코드들이 남아있어서 영향을 준 것으로 보입니다. 번거롭게 해드려 죄송합니다...
그리고 감사합니다..
처음 알려주신 코드도 삭제하고
write_update.head.skin.php 파일을 생성해서
아래 소스를 추가한 후 업로드 해보세요.
if($w == '' && $ca_name) {
$sql = "SELECT count(*) as cnt FROM {$write_table} where ca_name='$ca_name' ";
$result = sql_query($sql);
while($row = sql_fetch_array($result)) {
if($row['cnt'] >= 3) {
alert($ca_name.'분류는 3개까지만 등록할 수 있습니다.');
}
}
}
이 것만 적용하니 제대로 됩니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
상기처럼 적용할 경우 해당 테이블 명은 어디에 넣어야 하는지요?? 너무 몰라 미안한 질문을 하게 됩니다.