게시판명 > 분류명 일 경우 분류 당 게시 글 갯수 제한 방법 문의 드립니다.

게시판명 > 분류명 일 경우 분류 당 게시 글 갯수 제한 방법 문의 드립니다.

QA

게시판명 > 분류명 일 경우 분류 당 게시 글 갯수 제한 방법 문의 드립니다.

본문

안녕하세요..고수님들

 

게시판을 생성해서 등록할 수 있는 갯수를 제한하느라고 write.skin.php에 아래와 같은 코드로 사용 중인데요.


if ($w != 'u'){
  if($board['bo_count_write'] >=3 ) {
  alert('본 게시판은 3개까지만 등록할 수 있습니다.');
  }
}

 

이 것을 게시판이 아닌 분류(ca_name) 별로 제한 하려고 합니다. 위의 코드 대신 어떻게 만들어야 하는지 도움 주시면 고맙겠습니다.

이 질문에 댓글 쓰기 :

답변 3

extend/user.config.php


function hook_write_update_before($board, $wr_id, $w, $qstr) {
    global $g5, $ca_name;
 
    if(empty($w) == false || $board['bo_use_category'] != '1') {
        return true;
    }
 
    $cnt = 3;
 
    $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);
 
    if ($data['cnt'] >= $cnt) {
        alert('Request Unavailable (limit count reached: ' . $cnt . ')');
        return false;
    }
 
    return true;
}
 
add_event('write_update_before', 'hook_write_update_before', 10, 4);

사이트에 게시판이 여러 개인데요.. 특정한 게시판만 제어를 하려고 합니다.
말씀하신 extend에 적용하면 모든 게시판에 영향을 주는 것은 아닌지요?? 한 개의 게시판만 특정하여 적용하려 해도 위에 코드로 되는 것인지 궁금합니다..

모든 게시판에 영향을 주는것이 맞고
free (g5_write_free) 인 경우만 허용하려면 다음처럼 수정해볼수 있습니다.


    if(empty($w) == false || $board['bo_use_category'] != '1' || $board['bo_table'] != 'free') {
        return true;
    }

분류리스트에서 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(''); }
     });
});

 

 


if($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개 까지만 등록이 가능한 것을 의미하는 것인가요?

예를 들면 free라는 게시판에 자유/행복/기쁨 이라는 3개의 분류를 사용한다면 글 쓸 때 자유라는 카테고리에 3 개까지만 글을 등록할 수 있고 마찬가지로 행복이라는 카테고리에도 4번째 글을 등록할 수 없게 하는 것인지요??

안녕하세요.
오늘 출근해서 적용해 보니 글쓰기는 제한없이 계속 되었고 게시글을 수정하려고 하니
'분류는 3개까지만 등록할 수 있습니다.' 라는 메세지가 뜨고 수정도 안 되는 상황이 되네요.
어디가 문제였을까요??

감사합니다.

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개까지만 등록할 수 있습니다.');
        }
    }
}

신경 써주셔서 너무 감사합니다.
추가로 업로드 하니 원하는 결과를 얻었습니다. 다만, 앞에 말씀드린 것처럼 수정이 안 되고
'분류는 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개까지만 등록할 수 있습니다.');
        }
    }
}

이 것만 적용하니 제대로 됩니다.

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

회원로그인

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