코멘트 + 평점주기,평가그래프,보너스포인트 - 회원전용(수정5) 정보
코멘트 + 평점주기,평가그래프,보너스포인트 - 회원전용(수정5)첨부파일
본문

※코멘트 + 평점주기,평가그래프 - 회원전용
*수정해야할 파일은 다음과 같습니다.
=========================================
1.보드스킨/view.skin.php__________________평가그래프,평점,참여인원,획득포인트 출력
2.보드스킨/view_comment.skin.php__________평가그래프,평가점수 출력
3.보드스킨/write.skin.php_________________글수정시 평가점수 삭제 안되게 wr_9 삽입
*수정 또는 생성할 파일은 다음과 같습니다.
=========================================
4.보드스킨/write_comment_update.skin.php__평가점수 기록,평가포인트지급
5.보드스킨/delete_comment.skin.php________평가점수 삭제,평가포인트회수
6.보드스킨/delete.skin.php_____________________상동
7.bbs/delete_all.php______________________상동
8.extend/xxx.lib.php______________________평가그래프 함수
*평가점수는 회원만 사용가능 합니다.
*게시물 여유필드 9를 사용합니다.
*코멘트 작성시 평가점수는 한 회원당 한번만 줄 수 있게 되어 있습니다.
(write_comment_update.skin.php 쪽에서 조절 가능합니다. 만약 코멘트 글쓴 갯수로
코멘트쓰기를 제한 하시려면 http://sir.co.kr/bbs/tb.php/g4_tiptech/2136 를 참조하세요.
꼭 함께 써야 하는 건 아닙니다.)
*코멘트 평가점수와 평가포인트값이 동일하게 설정하거나 또는 비율값을 적용합니다.
(평가점수 5 = 원글 작성자에게 지급되는 평가포인트 5 x 비율값)
*원글 작성자는 코멘트에 평가점수를 줄 수 없습니다.
*평가점수는 1~10까지로 설정되어 있습니다.
*delete_all.php를 제외하고는 모두 스킨파일쪽에서 처리되도록 했습니다.
(평가포인트 지급된거 회수하는 내용이므로 꼭 필요한 건 아닙니다.)
*평가그래프는 네이버영화에서 본 뜬 것으로 적절히 수정하시면 됩니다.
코멘트 평가점수와 평가포인트가 함께 작동되는데, 소스에서 주석처리로 평가포인트 부분은
사용 안하게 하셔도 되겠습니다.
수정 2006.4.1
-view.skin.php 수정 (원글 wr_9에 기록되는 평가점수 관련값에 약간 변화)
-write_commnet_update.skin.php 수정 (소스 수정)
-delete_comment.skin.php 수정 (평가점수와 평가포인트의 비율 $rate 변수추가)
-delete.skin.php 수정 (평가점수와 평가포인트의 비율 $rate 변수추가)
-delete.all.php 수정 (평가점수와 평가포인트의 비율 $rate 변수추가)
수정 2005.1.17
-보드스킨/view_comment.skin.php 부분 소스 에러 수정했습니다. 한분도 지적 않해 주셨네요;
수정 2005.1.20
-글수정시 기록된 평가점수가 사라지는 에러를 수정요 (write.skin.php 수정추가)
수정 2006.3.24
-소스 약간 수정 (평가포인트합계 계산 및 출력부분)
↓작업시작
=========================================================
1.
▶보드스킨/view.skin.php 파일을 여시고..
// 링크
$cnt = 0;
for ($i=1; $i<=$g4[link_count]; $i++)
{
if ($view[link][$i])
{
$cnt++;
$link = cut_str($view[link][$i], 65);
echo "<tr><td height=22> <img src='{$board_skin_path}/img/icon_link.gif' align=absmiddle> <a href='{$view[link_href][$i]}' target=_blank><strong>{$link}</strong> ({$view[link_hit][$i]})</a></td></tr>";
}
}
?>
▶위 소스 다음 줄즘에 ...
<!--★평점주기관련시작-->
<?
//if ($view[wr_9]) {
$arr = explode("|",$view[wr_9]); //여유필드9 이용
if ($arr[0] == 10) {$average_score = 10;} else if ($arr[0] == 0) {$average_score = 0;} else {$average_score = number_format($arr[0],2);} //평균점수
$tm_count = number_format($arr[1]); //참여인원
$total_point = number_format($arr[3]); //포인트합계
$ment = "<strong>{$average_score}</strong>/10 ({$tm_count}명 참여) <img src='{$board_skin_path}/img/icon_point.gif' align=absmiddle> <u><strong>{$total_point}</strong>포인트 획득</u>";
echo "<tr><td height=22><table></tr><td width=1></td><td>". percentage_graph($average_score,'10',$board_skin_path)."</td><td>$ment</td></tr></table></td></tr>";
//}
?>
<!--★평점주기관련끝-->
▶위 소스를 추가해 넣습니다.
※위 처럼 하시면 글보기 화면상단에 "평가그래프 8.33/10 (3명 참여) 25포인트 획득" 이런식으로 표현되겠습니다.
첨부이미지 참조하세요. 평점은 소수점 2자리로 출력되게 되어 있습니다.
percentage_graph($average_score,'10',$board_skin_path) 이건 평가그래프 함수로 처리한 건데요. 10점이 최고값이고
현재값(여기선 $average_score)을 넣어주면 $board_skin_path 쪽에 함수내 정의된 이미지로 백분율로 계산되어 표시됩니다.
$list[$i][wr_9] 값을 받아서 리스트 페이지에도 저런식으로 삽입이 가능하겠습니다.
그래프는 이미지화일 없으면 빈 공간으로만 나오겠습니다.
=========================================================
=========================================================
2.
보드스킨/view_comment.skin.php 파일을 여시고..
<td><strong><?=$list[$i][name]?><? if ($is_ip_view) { echo " ({$list[$i][ip]})"; } ?></strong></td>
▶위 소스를...
<td>
<table><tr>
<td><strong><?=$list[$i][name]?><? if ($is_ip_view) { echo " ({$list[$i][ip]})"; } ?></strong></td>
<!--★평점주기관련시작-->
<?if ($list[$i][wr_9]) {?>
<td title='평가점수 <?=$list[$i][wr_9]?>점'><?echo percentage_graph($list[$i][wr_9],'10',$board_skin_path)?></td>
<td style='padding-top:4;'>(<?=$list[$i][wr_9]?> 점)</td>
<?}?>
<td><input type='hidden' id='is_score_<?=$comment_id?>' value='<?=$list[$i][wr_9]?>'></td>
<!--★평점주기관련끝-->
</tr></table>
</td>
▶위와 같은 형태로 수정해 줍니다. 보시고 적절히 수정하세요. 아래로 내려가셔서..
<td width="95%">
<textarea id="wr_content" name="wr_content" rows="10" itemname="내용" required
<? if ($comment_min || $comment_max) { ?>onkeyup="check_byte('wr_content', 'char_count');"<?}?> style='width:100%; word-break:break-all;' class=tx></textarea>
<? if ($comment_min || $comment_max) { ?><script language="javascript"> check_byte('wr_content', 'char_count'); </script><?}?></td>
<td width=80 align=center><input type="image" src="<?=$board_skin_path?>/img/ok_btn.gif" border=0 accesskey='s'></td></tr>
▶위 소스를..
<td width="95%">
<textarea id="wr_content" name="wr_content" rows="10" itemname="내용" required
<? if ($comment_min || $comment_max) { ?>onkeyup="check_byte('wr_content', 'char_count');"<?}?> style='width:100%; word-break:break-all;' class=tx></textarea>
<? if ($comment_min || $comment_max) { ?><script language="javascript"> check_byte('wr_content', 'char_count'); </script><?}?>
<!--★평점주기관련시작-->
<?if ($member[mb_id]) {?>
<div align=right>
코멘트와 함께 <select name="wr_9" style='width:40px;height:19px'>
<option value=''>0</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
</select> 점의 평가점수를 원글에 부여합니다.
</div>
<?}?>
<!--★평점주기관련끝-->
</td>
<td width=80 align=center><input type="image" src="<?=$board_skin_path?>/img/ok_btn.gif" border=0 accesskey='s'></td></tr>
▶위와 같은 형태로 수정해 줍니다. 아래 스크립트 부분으로 내려가셔서..
// 코멘트 수정
if (work == 'cu')
{
document.getElementById('wr_content').value = document.getElementById('save_comment_' + comment_id).value;
if (typeof char_count != 'undefined')
check_byte('wr_content', 'char_count');
}
▶위 소스를...
// 코멘트 수정
if (work == 'cu')
{
//★평점주기관련시작
<?if ($member[mb_id]) {?>
var f = fviewcomment.wr_9;
var is_score = parseInt(document.getElementById('is_score_' + comment_id).value);
for (i = 0; i < f.length; i++) {
if (f.options[i].value == is_score || !is_score && !f.options[i].value) f.options[i].selected = true;
}
<?}?>
//★평점주기관련끝
document.getElementById('wr_content').value = document.getElementById('save_comment_' + comment_id).value;
if (typeof char_count != 'undefined')
check_byte('wr_content', 'char_count');
}
▶위와 같이 수정해 줍니다.
=========================================================
=========================================================
3.
▶보드스킨/write.skin.php 파일을 여시고..
<input type=hidden name=sod value="<?=$sod?>">
<input type=hidden name=page value="<?=$page?>">
▶위 소스 다음 줄즘에 ...
<input type=hidden name=wr_9 value="<?=$write[wr_9]?>"> <?//★평점주기관련?>
▶위 소스를 추가해 넣습니다.
※글 수정시 wr_9에 저장된 값을 불러와서 다시 기록하지 않으면 초기화 되어 버리므로
평가점수가 사라져 버립니다. 위 처럼 해주면 해결 됩니다.
=========================================================
=========================================================
4.
보드스킨/write_comment_update.skin.php 화일을 만듭니다. 아래는 전체소스입니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
//★평점주기관련추가시작
//회원만 적용되며, 평가점수는 1번만 줄 수 있고, 여유필드 wr_9를 사용합니다.
//아래 소스는 보드스킨/write_comment_update.skin.php용입니다.
if ($member[mb_id]) {
$rate = 15; //★평가포인트 = 평가점수 * $rate
//원글 정보
$arr = sql_fetch("select mb_id from $write_table where wr_id='$wr_id'");
$source_mb_id = $arr[mb_id]; //원글 작성자의 id
//평가점수를 준 자신의 코멘트 정보들
$arr2 = mysql_fetch_array(mysql_query("select count(*) from $write_table where wr_parent = '$wr_id' and wr_is_comment ='1' and wr_9 > 0 and mb_id = '$member[mb_id]'"));
$already = $arr2[0] - 1; //원글에 평가점수를 준 자신의 코멘트 갯수 (현재꺼 제외)
//코멘트 수정시 조건을 위해 정보필요
if ($w == "cu") {
$arr3 = mysql_fetch_array(mysql_query("select wr_9 from $write_table where where wr_id='$comment_id'"));
$old_score = $arr3[0] * $rate; //수정하려는 코멘트의 평가점수
}
//동일인(원글=코멘트작성인) 또는 이미 1개이상 평가점수 준 회원인가? 또는 원글작성자가 비회원인가..
$limit = 1; //한 사람당 평가점수 줄 수 있는 갯수
if (($w == "c" && $member[mb_id] == $source_mb_id) || ($w == "c" && $already >= $limit) || !$source_mb_id) {
@mysql_query("update $write_table set wr_9='' where wr_id='$comment_id'"); //평가점수 취소
} else {
//원글에 결과 기록작업
//평가점수가 있는 코멘트 정보만 가져온다.
$result = sql_query("select wr_9 from $write_table where wr_parent = '$wr_id' and wr_is_comment ='1' and mb_id != '$source_mb_id' and wr_9 > 0 ");
$total_count = mysql_num_rows($result); //참여인원
if ($total_count) {
for ($i=0; $row=sql_fetch_array($result); $i++) {
$sum_score += $row[wr_9]; //평가점수합계
$sum_point += $row[wr_9] * $rate; //평가포인트합계
}
$average_score = $sum_score / $total_count; //평균점수
//원글의 wr_9필드에 "평균점수|참여인원|평가포인트합계|점수합계"를 구분자(|)와 함께 기록
@mysql_query("update $write_table set wr_9='$average_score|$total_count|$sum_point|$sum_score' where wr_id='$wr_id'");
}
//원글 작성자에게 평가평가포인트주기 (필요에 따라 주석처리)
//평가점수와 평가포인트가 동일한 경우로 설정되어 있습니다. 적절히 수정해서 쓰셔도 됩니다.
$c_bonus_point = $wr_9 * $rate; //평가포인트
if ($w == "cu") {
if (!delete_point($source_mb_id, $bo_table, $comment_id, '코멘트평가포인트')) insert_point($source_mb_id, $old_score * (-1), ""); //기존 포인트보상금 제거,환불
}
if ($c_bonus_point) insert_point($source_mb_id, $c_bonus_point, "$board[bo_subject] {$wr_id}-{$comment_id} 코멘트평가포인트지급", $bo_table, $comment_id, '코멘트평가포인트'); //포인트지급
}
}
//★평점주기관련추가끝
?>
=========================================================
=========================================================
5.
보드스킨/delete_comment.skin.php 화일을 만듭니다. 아래는 전체소스입니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
//★평점주기관련추가시작
//회원만 적용되며, 평가점수는 1번만 줄 수 있고, 여유필드 wr_9를 사용합니다.
//아래 소스는 보드스킨/delete_comment.skin.php용입니다.
if ($member[mb_id]) {
$rate = 15; //★평가포인트 = 평가점수 * $rate
//원글에 결과 기록작업
//평가점수가 있는 코멘트 정보만 가져온다.
$result = sql_query("select wr_9 from $write_table where wr_parent = '$write[wr_parent]' and wr_is_comment ='1' and mb_id != '$source_mb_id' and wr_9 > 0 ");
$total_count = mysql_num_rows($result); //참여인원
if ($total_count) {
for ($i=0; $row=sql_fetch_array($result); $i++) {
$sum_score += $row[wr_9]; //평가점수합계
$sum_point += $row[wr_9] * $rate; //평가포인트합계
}
$average_score = $sum_score / $total_count; //평균점수
//원글의 wr_9필드에 "평균점수|참여인원|평가포인트합계|점수합계"를 구분자(|)와 함께 기록
@mysql_query("update $write_table set wr_9='$average_score|$total_count|$sum_point|$sum_score' where wr_id='$write[wr_parent]'");
} else {
@mysql_query("update $write_table set wr_9='' where wr_id='$write[wr_parent]'"); //원글의 wr_9필드 초기화
}
//원글 작성자에게 지급된 평가평가포인트 회수 (필요에 따라 주석처리)
//평가점수와 평가포인트가 동일한 경우로 설정되어 있습니다. 적절히 수정해서 쓰셔도 됩니다.
//원글정보
$arr =mysql_fetch_array(mysql_query("select mb_id from $write_table where wr_id='$write[wr_parent]'"));
$source_mb_id = $arr[0]; //원글 작성자의 id
$c_bonus_point = $write[wr_9] * $rate; //평가포인트
if ($member[mb_id] != $source_mb_id) //동일인이 아닐 경우
{
if (!delete_point($source_mb_id, $bo_table, $comment_id, '코멘트평가포인트'))
insert_point($source_mb_id, $c_bonus_point * (-1), "$board[bo_subject] {$write[wr_parent]}-{$comment_id} 코멘트평가포인트회수");
}
}
//★평점주기관련추가끝
?>
※코멘트가 삭제 될때, 평가점수를 새롭게 정리합니다. 평가포인트도 원글작성자로 부터 회수합니다.
=========================================================
=========================================================
6.
보드스킨/delete.skin.php 화일을 만듭니다. 아래는 전체소스입니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
//★평점주기관련추가시작
//원글 작성자에게 지급된 평가포인트 회수 (필요에 따라 주석처리)
//평가점수와 평가포인트가 동일한 경우로 설정되어 있습니다. 적절히 수정해서 쓰셔도 됩니다.
//아래 소스는 보드스킨/delete.skin.php용입니다.
$sql = " select wr_id, wr_9 from $write_table where wr_parent = '$write[wr_id]' and wr_is_comment ='1' and wr_9 > 0 order by wr_9 desc ";
$result = sql_query($sql);
$rate = 15; //★평가포인트 = 평가점수 * $rate
while ($row = sql_fetch_array($result))
{
$c_bonus_point = $row[wr_9] * $rate; //평가포인트
if (!delete_point($write[mb_id], $bo_table, $row[wr_id], '코멘트평가포인트'))
insert_point($write[mb_id], $c_bonus_point * (-1), "$board[bo_subject] {$write[wr_id]}-{$row[wr_id]} 코멘트평가포인트회수");
}
//★평점주기관련추가끝
?>
※글삭제시 해당글의 코멘트에 평가점수가 있고, 평가포인트가 원글작성자에게
지급되었다면... 모두 회수합니다. 평가포인트를 평가점수와 함께 지급하는 경우가
아니라면 불필요합니다.
=========================================================
=========================================================
7.
bbs/delete_all.php 파일을 여시고..
// 나라오름님 수정 : 원글과 코멘트수가 정상적으로 업데이트 되지 않는 오류를 잡아 주셨습니다.
//$sql = " select wr_id, mb_id, wr_comment from $write_table where wr_parent = '$write[wr_id]' order by wr_id ";
$sql = " select wr_id, mb_id, wr_is_comment from $write_table where wr_parent = '$write[wr_id]' order by wr_id ";
$result = sql_query($sql);
while ($row = sql_fetch_array($result))
{
위 소스 윗줄 즘에..
//★평점주기관련추가시작
//원글 작성자에게 지급된 평가포인트 회수 (필요에 따라 주석처리)
//평가점수와 평가포인트가 동일한 경우로 설정되어 있습니다. 적절히 수정해서 쓰셔도 됩니다.
$sql = " select wr_id, wr_9 from $write_table where wr_parent = '$write[wr_id]' and wr_is_comment ='1' and wr_9 > 0 order by wr_9 desc ";
$result = sql_query($sql);
$rate = 15; //★평가포인트 = 평가점수 * $rate
while ($row = sql_fetch_array($result))
{
$c_bonus_point = $row[wr_9] * $rate; //평가포인트
if (!delete_point($write[mb_id], $bo_table, $row[wr_id], '코멘트평가포인트'))
insert_point($write[mb_id], $c_bonus_point * (-1), "$board[bo_subject] {$write[wr_id]}-{$row[wr_id]} 코멘트평가포인트회수");
}
//★평점주기관련추가끝
위 소스를 추가해 넣습니다.
※ delete_all.php 화일은 작업 안하셔도 상관은 없습니다. 평가포인트를 지급하게 사용하신
경우라면 필요하겠고, 그렇지 않다면 없어도 됩니다.
관리자 일괄 글삭제시 해당글 내의 코멘트의 평가정보로 인한 평가포인트 지급된 사항을
회수하는 내용입니다.
=========================================================
=========================================================
8.
extend/xxx.lib.php 라는 적절한 이름으로 화일을 드시고, 아래는 전체소스입니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별페이지 접근불가
//==소스시작
//퍼센테이지 그래프 - 평가점수용
//$now 현재값, $max 최고값, $path 그래프경로
//echo percentage_graph('8.5','10',$board_skin_path)
function percentage_graph($now='',$max='',$path='') {
global $g4;
$percentage = $now * 100 / $max; //백분율
return "
<table cellpadding=0 cellspacing=0 border=0 width=81 height=13 align='center' background='{$path}/img/star_s_bg.gif' title='{$percentage}%'>
<tr>
<td>
<!-- 평균값에 따라 테이블 width 값 변경 -->
<table cellpadding=0 cellspacing=0 border=0 width={$percentage}% height=13 background='{$path}/img/star_s.gif'><tr><td></td></tr></table>
<!-- 평균값에 따라 테이블 width 값 변경 -->
</td>
</tr>
</table>
";
}
//==소스끝
?>
※최고값과, 현재값과 이미지가 있는 경로만 입력시키면...
글목록이나 글보기 등에서 사용 가능하겠습니다. 첨부이미지 참고하세요.
함수의 리턴내용을 걍 꺼내서 삽입하고 적절히 쓰셔도 상관 없습니다.
/lib 폴더에 만드셔서 필요한 곳에서만 불러 쓰셔도 되겠구요.
=========================================================
↑작업끝
※문제점 발견되면 말씀해 주세요.
16
댓글 56개
욱..이론... 비회원에게 회원이 평가점수를 주는 일이 발생하네요.. 그 부분 수정해서 다시 올리겠습니다.
↑ 보드스킨/write_comment_update.skin.php 내용 수정되었습니다.;
혹시 한사람이 여러번 평가점수 적용 된다면, 보드스킨/write_comment_update.skin.php의 $limit 값이 1인지 확인해 보세요.
보드스킨/view_comment.skin.php 자바스크립트 부분 수정되었습니다.
추천꾸우욱 눌러영 ㅎㅎ
별포인트와 추천평점을 따로 분리해서 같이 표시하거나 둘중 하나 표시하지 않게 하는것도 좋겠네요. ^^
ㅡㅡ;;
※
만약, 게시판에서 코멘트평가점수 기능은 안쓰고, 그냥 추천점수만 별그래프를 이용하고 싶다면...
또는 코멘트평가점수에서 별그래프는 안쓰고, 추천점수만 별그래프로 함께 이용한다면..
(-아래쪽 코멘트에 '※보너스포인트는 작동하지 않게 하는 방법' 참조하시구요.)
1.list.skin.php 에서라면..
추천점수합계 최고값을 임의로 정하셔서 한 100 이라고 가정하고..
<?echo percentage_graph($list[$i][wr_good],'100',$board_skin_path)?> 이런식으로 원하는 곳에 삽입하시면
백분율화해서 별그래프로 추천점수를 표현해 주겠습니다. 최고값 100점에서 현재 추천점수가 몇퍼센트에 해당하는지를 표현한다는 말이겠죠.
혹시라도 100점이 넘어도 그래프는 별표 5개로 나오겠죠. 별 상관은 없을 듯 합니다.
2.view.skin.php 에서라면..
<?echo percentage_graph($view[wr_good],'100',$board_skin_path)?> 이런식으로 원하는 곳에 삽입하시면 되겠구요.
코멘트평가점수와 같이 쓴다면 별그래프가 같아서 곤란하겠죠. 별그래프와 다른 이미지를 필요로 하겠죠.
-별그래프 함수쪽을 응용하면, 그래프를 선택적으로 변수로 받아서 다르게 뿌려줄 수도 있겠습니다

걍~포기하고 이팁을 사용 할렵니다.ㅎㅎ
추천평점은 자기포인트 안주고 그냥 평가하는거
이렇게 두개가 다 되는것도 괞찮지 않을까하는거죠.
그리고 반대로 저 포인트를 주면 표시되는거 말고 게시자에게 포인트선물하기 해가지고 저 점수하고는 상관없는 그런기능에 대해서 예전에 팁이있었거든요.
그러니까 주고싶은 사람은 개인적으로 주고 게시물 평가는 그냥 할 수있게..
저게 나눠진것도 필요하다는거죠.
만약 위와같은 통합형 이라면 게시물 삭제하면 덧글이 다삭제되니까 포인트도 다 차감되겠죠.
아니라해도 그렇게 되야 맞는거고 그 게시물에서만 준 포인트이니까..^^
현재 본문의 내용은 좀 단순하게 "평가점수=보너스포인트점수" 로 되어 있는데..
코멘트 작성할때 '평가점수' 와 '보너스포인트' 를 따로 줄 수 있는거 말씀이시죠.
위 내용 응용만 하면 가능 합니다.
둘로 나누자니, 코멘트 한번 쓰는데 번거로울꺼 같기도 하고, 글작성에 의욕을
더해주기 위해 가능하면 평점을 주면 간단히 포인트도 함께 받도록 가볍게 유도했습니다.
꼭 포인트 더 주고 싶다면, 쪽지로 포인트선물하기를 하면 되지 않을까 생각하고요..
제 맘대로 생각하다보니 그리 되었습니다.
- 아.. 그리고 코멘트 보너스포인트는 코멘트작성자의 포인트에서 빠져 나가는건 아닙니다.
※ 현재 내용으로는 기본값이 평균점수값이 0으로 되어 있는데, 혹시라도 평가점수를
기본적으로 코멘트와 함께 주도록 하려면..
<option value='10'>10</option>
<option value='9'>9</option>
<option value='8'>8</option>
<option value='7'>7</option>
<option value='6'>6</option>
<option value='5'>5</option>
<option value='4'>4</option>
<option value='3'>3</option>
<option value='2'>2</option>
<option value='1'>1</option>
<option value=''>0</option>
요런식으로 순서만 조정해 주시면... 평가점수 기본 10점씩 팍팍 들어가겠죠.
원글 쓰신는 분은 코멘트로 인해 평가점수 또는 포인트 팍팍 쌓게 유도할 수 있겠습니다.
본문 내용에서..
1.
보드스킨/view.skin.php 파일에서
▶$ment = "<strong>{$average_score}</strong>/10 ({$tm_count}명 참여) <img src='{$board_skin_path}/img/icon_point.gif' align=absmiddle> <u><strong>{$total_score}</strong>포인트 획득</u>";
위 소스를요..
$ment = "<strong>{$average_score}</strong>/10 ({$tm_count}명 참여)";
▶위 처럼 바꾸시면 되구요..
======================
3.
보드스킨/write_comment_update.skin.php 에서
//원글 작성자에게 평가보너스포인트주기 (필요에 따라 주석처리)
//평가점수와 보너스포인트가 동일한 경우로 설정되어 있습니다. 적절히 수정해서 쓰셔도 됩니다.
$c_bonus_point = $wr_9; //보너스포인트
if ($w == "cu") {
if (!delete_point($source_mb_id, $bo_table, $comment_id, '코멘트평가보너스')) insert_point($source_mb_id, $now_score * (-1), ""); //기존 코멘트평가보너스 제거,환불
}
insert_point($source_mb_id, $c_bonus_point, "$board[bo_subject] {$wr_id}-{$comment_id} 코멘트평가보너스지급", $bo_table, $comment_id, '코멘트평가보너스'); //포인트지급
}
} else {
if ($wr_9 > 0) @mysql_query("update $write_table set wr_9='' where wr_id='$comment_id'"); //평가점수 취소
▶위 소스를 주석처리 하시던지... 제거하시구요... 코멘트쓸때 포인트보너스주는거에요.
======================
4.
보드스킨/delete_comment.skin.php 에서
//원글 작성자에게 지급된 평가보너스포인트 회수 (필요에 따라 주석처리)
//평가점수와 보너스포인트가 동일한 경우로 설정되어 있습니다. 적절히 수정해서 쓰셔도 됩니다.
//원글정보
$arr =mysql_fetch_array(mysql_query("select mb_id from $write_table where wr_id='$write[wr_parent]'"));
$source_mb_id = $arr[0]; //원글 작성자의 id
$c_bonus_point = $write[wr_9]; //보너스포인트
if ($member[mb_id] != $source_mb_id) //동일인이 아닐 경우
{
if (!delete_point($source_mb_id, $bo_table, $comment_id, '코멘트평가보너스'))
insert_point($source_mb_id, $c_bonus_point * (-1), "$board[bo_subject] {$write[wr_parent]}-{$comment_id} 코멘트평가보너스회수");
}
}
▶위 소스를 주석처리 하시던지... 제거하시구요... 포인트보너스준거 회수하는거에요.
======================
5.6.
bbs/delete.skin.php 와 bbs/delete_all.php 에서요..
"//★평점주기관련추가시작 ~ //★평점주기관련추가끝"의 사이내용을 주석처리 하시던지..
제거하시던지... 보드스킨/delete.skin.php 화일은 스킨폴더에서 지우셔도 됩니다.
물론 다른 내용이 함께 들어 있지 않다면 말이죠.
※코멘트 평가점수와 보너스포인트를 다르게 주기 (현재: 코멘트평가점수=보너스포인트)
수정대상====
3.보드스킨/write_comment_update.skin.php
5.보드스킨/delete.skin.php
6.bbs/delete_all.php
$c_bonus_point = $wr_9; //보너스포인트 (write_comment_update.skin.php)
또는 $c_bonus_point = $row[wr_9]; //보너스포인트 (delete.skin.php 또는 delete_all.php)
위 소스를 아래 예제에서 처럼 주석처리 하시고, 바로 다음 줄에 추가소스를 삽입하시면 됩니다.
예제1) 평가점수마다 보너스포인트 별도로 적용하기
//$c_bonus_point = $wr_9; //보너스포인트
if($wr_9 == 10)
{$c_bonus_point = 300;}
else if($wr_9 == 9)
{$c_bonus_point = 240;}
else if($wr_9 == 8)
{$c_bonus_point = 190;}
중간생략...
else if($wr_9 == 1)
{$c_bonus_point = 10;}
예제2) 평가점수를 구간으로 설정해서 보너스포인트 적용하기
//$c_bonus_point = $wr_9; //보너스포인트
if($wr_9 <= 2)
{$c_bonus_point = 10;}
else if($wr_9 <= 4)
{$c_bonus_point = 25;}
else if($wr_9 <= 6)
{$c_bonus_point = 36;}
중간생략...
else if($wr_9 <= 10)
{$c_bonus_point = 240;}
예제3) 평가점수의 10배를 보너스포인트로 주고자 할때..
//$c_bonus_point = $wr_9; //보너스포인트
$c_bonus_point = $wr_9 * 10; //보너스포인트
등등..
에러수정 없이 혹~시라도 적용하신 분이 계셨다면, 코멘트 수정버튼 클릭시 스크립트 오류가 발생했을 겁니다.
<input type='hidden' id='is_score_<?=$comment_id?>' value='<?=$list[$i][wr_9]?>'> 부분이 wr_9값이 있던 없던 출력되어야 하는데 조건문 안에 들어가 있어서 ... 발생했습니다. 코멘트 수정시 기록된 평가점수로 selected 되게 하느라 사용했습니다;
수정된 내용입니다.
<td>
<table><tr>
<td><strong><?=$list[$i][name]?><? if ($is_ip_view) { echo " ({$list[$i][ip]})"; } ?></strong></td>
<!--★평점주기관련시작-->
<?if ($list[$i][wr_9]) {?>
<td title='평가점수 <?=$list[$i][wr_9]?>점'><?echo percentage_graph($list[$i][wr_9],'10',$board_skin_path)?></td>
<td style='padding-top:4;'>(<?=$list[$i][wr_9]?> 점)</td>
<?}?>
<td><input type='hidden' id='is_score_<?=$comment_id?>' value='<?=$list[$i][wr_9]?>'></td>
<!--★평점주기관련끝-->
</tr></table>
</td>
혹시 이런방법도 가능할지 질문드립니다?
지금 같은경우는 평가한 포인트를 점수대로 임의로 생성해서 주게 되는거 같은데
그 포인트를 평가한 회원의 포인트로 차감하여 주는방법은 없을까요?
바쁘시더라도 가르침 부탁드립니다..^^
요 링크로 가셔서 한번 소스 참고해 보세요. 포인트 보상금을 게시물에 첨가하는건데.. 저 링크 내용에서는
회원의 포인트에서 빠져나가게 했거든요. 참고하셔서 응용해보세요. 죄송합니다.
포인트를 주어도 포인트가 기록되지 않네요.
한번 확인 부탁드립니다. 감사합니다.

정말 감사합니다. ^^
다시 해보아야줘..감사합니다
j
Warning: Cannot modify header information - headers already sent by (output started at /home/hosting_users/diorcafe/www/gnuboard4/extend/rating_lib.php:29) in /home/hosting_users/diorcafe/www/gnuboard4/head.sub.php on line 35
Warning: Cannot modify header information - headers already sent by (output started at /home/hosting_users/diorcafe/www/gnuboard4/extend/rating_lib.php:29) in /home/hosting_users/diorcafe/www/gnuboard4/head.sub.php on line 38
Warning: Cannot modify header information - headers already sent by (output started at /home/hosting_users/diorcafe/www/gnuboard4/extend/rating_lib.php:29) in /home/hosting_users/diorcafe/www/gnuboard4/head.sub.php on line 39
Warning: Cannot modify header information - headers already sent by (output started at /home/hosting_users/diorcafe/www/gnuboard4/extend/rating_lib.php:29) in /home/hosting_users/diorcafe/www/gnuboard4/head.sub.php on line 40
Warning: Cannot modify header information - headers already sent by (output started at /home/hosting_users/diorcafe/www/gnuboard4/extend/rating_lib.php:29) in /home/hosting_users/diorcafe/www/gnuboard4/head.sub.php on line 41
Warning: Cannot modify header information - headers already sent by (output started at /home/hosting_users/diorcafe/www/gnuboard4/extend/rating_lib.php:29) in /home/hosting_users/diorcafe/www/gnuboard4/head.sub.php on line 42
- 글쓴이가 포인트를 부여하는 코멘트를 작성 (포인트 반영 안됨)
- 다른 사람이 포인트를 부여하는 코멘트를 작성 (포인트 반영 됨)
- 다른 사람이 포인트를 부여하는 코멘트를 삭제 (글쓴이의 포인트가 반영됨~!!!)
* 글쓴이의 포인트는 어떤 상황에서도 반영되면 안되는데... 누군가 코멘트를 지우면
그때 글쓴이의 포인트가 반영이 되요. -..-a
//원글에 결과 기록작업
//평가점수가 있는 코멘트 정보만 가져온다.
윗부분에 아래를 넣어주면 됩니다.
//원글 정보
$arr = sql_fetch("select mb_id from $write_table where wr_id='$wr_id'");
$source_mb_id = $arr[mb_id]; //원글 작성자의 id




감사합니다.^^


