테스트 사이트 - 개발 중인 베타 버전입니다

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

메너 2년 전 조회 1,991

안녕하세요..고수님들

 

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

</p>

<p>if ($w != 'u'){

  if($board['bo_count_write'] >=3 ) {

  alert('본 게시판은 3개까지만 등록할 수 있습니다.');

  }

}

 

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

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
2년 전

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개

메너
2년 전
늦은 밤에 감사합니다.
상기처럼 적용할 경우 해당 테이블 명은 어디에 넣어야 하는지요?? 너무 몰라 미안한 질문을 하게 됩니다.
배르만
2년 전
테이블 명은 동작시점의 환경에 맞춰 자동으로 인식됩니다.
메너
2년 전
사이트에 게시판이 여러 개인데요.. 특정한 게시판만 제어를 하려고 합니다.
말씀하신 extend에 적용하면 모든 게시판에 영향을 주는 것은 아닌지요?? 한 개의 게시판만 특정하여 적용하려 해도 위에 코드로 되는 것인지 궁금합니다..
배르만
2년 전
모든 게시판에 영향을 주는것이 맞고
free (g5_write_free) 인 경우만 허용하려면 다음처럼 수정해볼수 있습니다.
[code]
if(empty($w) == false || $board['bo_use_category'] != '1' || $board['bo_table'] != 'free') {
return true;
}
[/code]
메너
2년 전
늦은 시간까지 친절하게 답해주셔서 너무 고맙습니다.
적용해 보고 의문점이 생기면 댓글 남겨 놓겠습니다.^^

댓글을 작성하려면 로그인이 필요합니다.

2년 전

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

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

e
2년 전

</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개

메너
2년 전
늦은 밤에 감사합니다.
알려 주신 코드가 각각의 분류 별로 3개 까지만 등록이 가능한 것을 의미하는 것인가요?

예를 들면 free라는 게시판에 자유/행복/기쁨 이라는 3개의 분류를 사용한다면 글 쓸 때 자유라는 카테고리에 3 개까지만 글을 등록할 수 있고 마찬가지로 행복이라는 카테고리에도 4번째 글을 등록할 수 없게 하는 것인지요??
e
eyekiss
2년 전
넵.. 맞습니다.
각 분류별 3개까지만 등록.
메너
2년 전
안녕하세요.
오늘 출근해서 적용해 보니 글쓰기는 제한없이 계속 되었고 게시글을 수정하려고 하니
'분류는 3개까지만 등록할 수 있습니다.' 라는 메세지가 뜨고 수정도 안 되는 상황이 되네요.
어디가 문제였을까요??

감사합니다.
e
eyekiss
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개까지만 등록할 수 있습니다.');
}
}
}
메너
2년 전
신경 써주셔서 너무 감사합니다.
추가로 업로드 하니 원하는 결과를 얻었습니다. 다만, 앞에 말씀드린 것처럼 수정이 안 되고
'분류는 3개까지만 등록할 수 있습니다.' 라는 경고 문구만 나옵니다..
게시 글이 2개 일 때는 수정이 가능하네요..
e
eyekiss
2년 전
$w == '' 이 조건이 새글쓰기 일때만 체크하는 건데요??
메너
2년 전
평소 여러 사람에게 도움 주시는 거 잘 알고.. 감사하게 생각하고 있습니다.
말씀하신 위에 내용은 이해는 하는데요.. 수정이라는 것이 새 글을 쓴다는 의미로 판독이 되는 것은 아닐까요??
무지해서 무식한 말 해 봅니다..ㅎ
메너
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개까지만 등록할 수 있습니다.');
}
}
}

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

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인