별점주기(원하는 게시판스킨에 적용,평가/후기) EUC-KR/UTF-8 > 그누4 스킨

그누4 스킨

스킨의 저작권은 해당 스킨 제작자님께 있으며, 그누보드의 저작권과 다를 수 있습니다.
스킨 다운로드시 좋아요와 감사의 코멘트를 남기시면 제작자에게 큰 힘이됩니다. ^^y
그누보드와 관련이 있지만 스킨과 빌더가 아니면 플러그인 게시판에 올려주세요.

별점주기(원하는 게시판스킨에 적용,평가/후기) EUC-KR/UTF-8 정보

게시판 별점주기(원하는 게시판스킨에 적용,평가/후기) EUC-KR/UTF-8

첨부파일

star_EUCKR.zip (20.5K) 265회 다운로드 2013-11-26 08:59:12
star_UTF8.zip (20.4K) 613회 다운로드 2013-11-26 08:59:12

본문

먼저 말러83님의 소스를 이용하여, 이미지등 약간의 수정만을 한것입니다.
말러83님께 감사드리며, 문제가 되면 말씀해주시면 내리겠습니다.
말러83님의 원본 : http://sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=75275&sca=%EA%B2%8C%EC%8B%9C%ED%8C%90&sfl=wr_subject%7C%7Cwr_content&stx=%EB%B3%84%EC%A0%90

-----------------------------------------------------------------------------------------------

EUC-KR버전 / UTF-8버전 모두 올려드립니다

상세페이지에서 별점을 주는 소스입니다
별점을 클릭하면, 자동으로 점수를 주며, 회원/비회원 모두 가능합니다 (1인1회만 가능)

그누보드스킨에 올라와있는 다수의 스킨들은 별점을 코멘트(댓글)작성시 별점을 줄수 있는 후기 방식입니다
말러83님이 개발하신 별점은 댓글과 상관없이 손쉽게 별점만을 줄수 있습니다
영카트/쇼핑몰/업체소개/맛집소개/제품리뷰 게시판 스킨등에 손쉽게 적용하실수 있습니다


원본에서 정비내용입니다
1) 별이미지 변경
2) 점수줄때 표시 내용 정리 및 변경
3) 안내창 글자 않보임/깨짐 현상 보완 (쵸파님 팁 적용)
4) 게시판 목록에서 평점 별 보이게 이소스와는 별개로 별도로 적용


※ 별점을 주는 소스이다보니, 별도의 게시판에 적용하면 그 게시판만 사용해야 하는 생각이 들까봐
원하는 게시판 스킨에 마음대로 갖다 붙일수 있도록, 소스 형태로 올립니다^^
※ 원하는 게시판의 스킨에만 적용하시면 됩니다^^

------------------------------------------------------------------------------------------------

☞ 파일적용

1) 본인환경에 맞는 star_EUCKR.zip 또는  star_UTF8.zip 압축을 다운받아 압축을 풉니다
2) 압축폴더에 img폴더와 __m3rating_update.php / _m3rating.php 파일이 있습니다^^
3) 적용하고 싶은 게시판 스킨 폴더에 모두 복사해서 붙여넣습니다
- 예) skin>board>basic 스킨에 만약 적용하려 한다면, basic 폴더 안에 넣으면 됩니다
4) 파일을 모두 서버로 업로드 합니다

------------------------------------------------------------------------------------------------

※ 스킨에 적용하기
☞ 내용/목록에 적용하기
1) view.skin.php파일을 열어 별점을 표시하고 싶은 위치에 아래 소스를 넣습니다

<? include("$board_skin_path/_m3rating.php"); //별점평가?>


2) list.skin.php 파일을 열어 게시물 노출되는 소스중에 노출하고 싶은 위치에 아래 소스를 넣습니다

<!--별점평가-->
<? // 기존 별점 가져오기
$sql_rating = "select * from m3rating where bo_table='$bo_table' and wr_id='{$list[$i]['wr_id']}'";
$rating = sql_fetch($sql_rating);
if($rating) {
$rating_count = sizeof(explode(",", $rating[star_data]));
$rating_average = sprintf("%.1f", $rating[star_average]);
} else {
$rating_count = 0;
$rating_average = "0.00";
}

$rating[star_average] = number_format($rating[star_average],1);

if ($rating[star_average] > 9)
    echo "<img src='$board_skin_path/img/rating10.png' align='absmiddle' />&nbsp;<span class='oranges'>$rating[star_average]</span>&nbsp;";
else if ($rating[star_average] > 8)
    echo "<img src='$board_skin_path/img/rating09.png' align='absmiddle' />&nbsp;<span class='oranges'>$rating[star_average]</span>&nbsp;";
else if ($rating[star_average] > 7)
    echo "<img src='$board_skin_path/img/rating08.png' align='absmiddle' />&nbsp;<span class='oranges'>$rating[star_average]</span>&nbsp;";
else if ($rating[star_average] > 6)
    echo "<img src='$board_skin_path/img/rating07.png' align='absmiddle' />&nbsp;<span class='oranges'>$rating[star_average]</span>&nbsp;";
else if ($rating[star_average] > 5)
    echo "<img src='$board_skin_path/img/rating06.png' align='absmiddle' />&nbsp;<span class='oranges'>$rating[star_average]</span>&nbsp;";
else if ($rating[star_average] > 4)
    echo "<img src='$board_skin_path/img/rating05.png' align='absmiddle' />&nbsp;<span class='oranges'>$rating[star_average]</span>&nbsp;";
else if ($rating[star_average] > 3)
    echo "<img src='$board_skin_path/img/rating04.png' align='absmiddle' />&nbsp;<span class='oranges'>$rating[star_average]</span>&nbsp;";
else if ($rating[star_average] > 2)
    echo "<img src='$board_skin_path/img/rating03.png' align='absmiddle' />&nbsp;<span class='oranges'>$rating[star_average]</span>&nbsp;";
else if ($rating[star_average] > 1)
    echo "<img src='$board_skin_path/img/rating02.png' align='absmiddle' />&nbsp;<span class='oranges'>$rating[star_average]</span>&nbsp;";
else if ($rating[star_average] > 0)
    echo "<img src='$board_skin_path/img/rating01.png' align='absmiddle' />&nbsp;<span class='oranges'>$rating[star_average]</span>&nbsp;";
else if ($rating[star_average] == 0 || !$rating[star_average])
    echo "<img src='$board_skin_path/img/rating0.png' align='absmiddle' />&nbsp;<span class='gray6s'>평가전</span>";

//참가인원 명수표시
echo "<span class='gray6s'>(".$rating_count."명)</span>";
?>

------------------------------------------------------------------------------------------------

☞ _m3rating.php 파일 수정하기!!!!!!

1) 모든 파일을 올리고, list와 view스킨파일에 모두 적용한 다음,
2) 게시판의 view 페이지를 웹에서 실행하면, _m3rating.php 상단에 표시된 테이블생성 코드에 의해
테이블이 생성됩니다.
3) 그이후에는 _m3rating.php 파일에서 테이블생성 코드를 삭제한 후 이용해 주세요^^

※ 1회실행으로 테이블생성후에는 m3rating.php 파일 4줄~14줄의 내용을 삭제하세요

/* 딱 한번 실행할 코드 (m3rating 테이블이 생성되면 지우세요)*/
$sql = "CREATE TABLE IF NOT EXISTS `m3rating` (
  `gr_id` varchar(255) NOT NULL,
  `bo_table` varchar(255) NOT NULL,
  `wr_id` varchar(255) NOT NULL,
  `star_average` float NOT NULL,
  `star_data` text NOT NULL,
  `star_list` text NOT NULL
);";
sql_query($sql);
/* 여기까지 딱 한번 실행할 코드 (m3rating 테이블이 생성되면 지우세요)*/

------------------------------------------------------------------------------------------------

리스트에 노출되는 텍스트의 class는 저희 것으로 지정했으므로, 실제 사용하시는 class로 변경하세요^^

위와 같이 list와 view에만 적용하면 됩니다^^
이미지등 변경을 원하시면, 이미지폴더의 이미지를 참고하여 원하는 스타일로 변경하세요^^

※ 비회원도 평점을 줄 수 있으므로, 실제 작동예를 보시려면, 점수를 줘보세요^^
※ 실제 판매상품에 적용되는 것이므로, 점수는 주시되 낮은 점수는 주지 마세요^^(평점이 낮아져요^^)
추천
12

댓글 전체

내용페이지에서 별점 출력하는 곳에 숫자 1이 표시되는 버그 수정(11/25오후3시수정)
-그전에 소스 적용하신분은 아래처럼 바꿔주세요^^

<?=include_once("$board_skin_path/_m3rating.php"); //별점평가?> 를
<? include("$board_skin_path/_m3rating.php"); //별점평가?> 로 변경하세요^^
너무 멋진 소스입니다.. 바로 적용했어요...
아쉬운점은.. 등록자나.. 중복투표자가 투표를 할때 메세지창에 아무런 내용이 나오지 않아서.. 아쉽네요..
제작 실력이 되면 그부분 고처보겠지만.. 능력부족이라..

예를 들어 등록자가 본인글에 별점을 주고자 하면 '본인글에 별점을 줄수 없습니다.'
중복 투표자에게는'이미 평가에 참여하셨습니다.'
이렇게 안내 메세지가 나오면 좋겠습니다.

전 처음에.. 제가 잘못 소스 적용한것인줄알고 ㅠ.ㅠ 안되는구나.. 이렇게 생각했거든요..
현재 소스가 euc-kr로 되어있어 안내글자가 공백으로 나와서 그렇습니다^^
__m3rating_update.php 파일에서 iconv 로 표시된 곳에  "euc-kr","utf-8" 로 된곳이 3개가 있을 것입니다. 이것의 위치를 바꾸어 수정해보세요
- "euc-kr","utf-8" -> "utf-8","euc-kr"
*제가 utf-8은 없어서 테스트는 해보지 않았으나, 한번 변경해보시기 바랍니다
*안내문구는 같은 파일페이지에서 문구를 수정하시면 됩니다

그리고 목록에 별점표시되는 것을 수정하였습니다. 점수/10 로 표시된것이 큰 의미가 없어
점수와 참여자수를 표시하는 것으로 수정하였습니다.
위 본문에 보시면, list.skin.php 파일에 넣는 소스를 변경하였으니, 수정해보시기 바랍니다^^
저만의 문제인지.. 전 익스8사용중입니다. 그림장수님이 말씀해준것처럼 3군데 모두변경했구요...
소스도 새로받아서 작업했는데.. 근데.. - "euc-kr","utf-8" -> "utf-8","euc-kr"
변경하니까 이제 메시지 창이 아예 안뜨네요...???
위에 설명한대로 euc-kr에 최적화된 소스입니다. utf-8사용자시라면 그 부분은 알아서 해결하셔야 할 듯 합니다
소스에는 문제가 없습니다.
utf-8 소스가 아닌데, utf-8에 맞추어드리는 부분은 제가 할수 없을 듯 합니다.

위에 euc-kr,utf-8 위치 바꾼것은 다시 원상태로 해 주시고
내용은 다르지만 iconv로 시작되는 세부분을 한번 바꾸어서 적용해보세요

iconv("euc-kr","utf-8","별점 {$star}점이 반영되었습니다.감사합니다.");

=> "별점 {$star}점이 반영되었습니다.감사합니다."; 

로 iconv관련 함수를 제외하고 텍스트문구로만 바꾸어서 테스트 해 보시기 바랍니다
iconv 들어가는 3부분 모두 수정해주세요

그래도 않되면, 이것은 제가 해결해드릴 수 없을듯 합니다

euc-kr 소스라고 분명히 기재해 드렸는데, utf-8에 적용하시면서 왜 않되냐고 하시면, 제가 할 말이 없습니다^^
여러가지 환경을 고려해서 다 만들 환경이 않되기에^^
제공하는 소스환경외에는 요청하시는 부분을 다 해드리지는 못합니다^^
utf-8버전 사용하시는 분들은...__m3rating_update.php 파일소스를 아래 처럼 바꾸면 됩니다..^^

<?
// 기본 인클루드
$g4_path = "../../..";
include_once("$g4_path/common.php");

// 변수 처리
$gr_id = $_POST[gr_id];
$bo_table = $_POST[bo_table];
$wr_id = $_POST[wr_id];
$star = $_POST[star];
if($member[mb_id]) $mb_id = $member[mb_id];
else $mb_id = $_SERVER[REMOTE_ADDR];

// 필요한 값이 넘어왔는지
if(!$_POST[gr_id]) die("그룹 값이 없음");
if(!$_POST[bo_table]) die("게시판 값이 없음");
if(!$_POST[wr_id]) die("글 번호가 없음");
if(!$_POST[star]) die("별점이 넘어오지 않음");

// 글 내용 가져오기
$sql = "select mb_id, wr_ip from `g4_write_$bo_table` where wr_id='$wr_id'";
$write = sql_fetch($sql);

// 없는 글이면
if(!$write) die("없는 글이거나 삭제된 글입니다.");

// 내 글이면
$s_name = "자신의 글은 추천할 수 없습니다.";
if($write[mb_id]==$mb_id || $write[wr_ip]==$mb_id) die($s_name);
//if($write[mb_id]==$mb_id || $write[wr_ip]==$mb_id) die("자신의 글은 추천할 수 없습니다.");

// 기존 별점 가져오기
$sql = "select * from m3rating where bo_table='$bo_table' AND wr_id='$wr_id'";
$rating = sql_fetch($sql);

// 기존 별점 있으면
if($rating) {
// 이미 참가한 경우
$s_name_alert = "이미 점수를 주셨습니다";
if(strpos(",".$rating[star_list].",", ",".$mb_id.",")!==false) die($s_name_alert);
// 참가하지 않은 경우 별점을 추가한다.
$star_average = (array_sum(explode(",",$rating[star_data]))+$star)/(sizeof(explode(",",$rating[star_data]))+1);
$sql = "update m3rating set bo_table='$bo_table', wr_id='$wr_id', star_average='$star_average', star_data=CONCAT(star_data, ',$star'), star_list=CONCAT(star_list, ',$mb_id') where gr_id='$gr_id' AND bo_table='$bo_table' AND wr_id='$wr_id'";
}
// 기존 별점이 없으면
else {
$sql = "insert into m3rating set gr_id='$gr_id', bo_table='$bo_table', wr_id='$wr_id', star_average='$star', star_data='$star', star_list='$mb_id'";
}

// 실행하기
sql_query($sql);

// 완료
$s_name_end = "{$star}점이 반영되었습니다";
die($s_name_end);
?>
해결되셔서 다행입니다^^
배틀님이 소스를 정리해주셔서~ 그대로 추가하여 EUCKR과 UTF8로 구분하여 다시 업로드하였습니다^^
각 게시글의 평점이 아닌 게시판 자체에 적용할 수 있는 방법은 없을까요?

http://wdbella.cafe24.com/ppasha/bbs/board.php?bo_table=seoul1&page=0
현재페이지가 이렇게 구성되어 있습니다.
왜 카드결제는 지원하지 않는건가요 ㅎㅎ 문서좀 구입하려했는데.. 제돈주고 사긴 아깝고 법인카드로 사려했는데 흑..
적용은 잘 한것 같습니다.
2개 이상 별점 등록시 합산을 통해 점수가 잘 들어오고 있습니다.

문제는 별점을 주고 클릭하면 경고창에서 아래와 같이 이상한 코드를 달고 들어오는데

그냥 딱 9점이 반영되였습니다. 이렇게 들어올 수 는 없나요.

__m3rating_update.php 파일에서 보면
// 완료
$s_name_end = "{$star}점이 반영되었습니다";
die($s_name_end);
위 내용만 가지고 들어오는거 아닌가요??????????


======================
팝업창 내용
<br/>
<b>Warnig</b> : Cannot modify header information - headers already sent by (output started at / home/hosting_uesrs/objet_maque/www/skin/board/idea/__m3rating_update.php) in
<b>/home/hosting_users/ogjer_maque/www/common.php</b> on line <b>8</b><br/>
9점이 반영되었습니다.
========================
별 이미지를 통해서 점수를 주지 않고 버튼을 통해서 점수를 반영하려고합니다.

버튼 이미지에 링크를 onClick="m3rate_c('<?=$i?>')" 이것을 삽입하면 되지만
문제점은 마우스가 버튼으로 옮겨지만 평균값으로  돌아가버리는 문제점이 있습니다.

마우스가 오버해도 별에 채워진 값은 그대로 유지되는 방법은 없나요

================================

제가 생각하기에는 버튼에 들어오는 값을
별 이미지에 7점일때 마우스를 때면 별 이미지가 7이미지가 그래도 유지된 상태에서
별점 주기 버튼에 7점에 해당하는 이미지를 불러온 후 7점을 부여하면 좋을것 같은데 쉽지가 않네요.

=================================

위와 동일한 방법인데요

별 이미지가 7점일때 마우스를 때면 별점 주기 버튼이 7점값이 들어도로도록 하는 방법도 좋을것 같습니다.
위 방법보다는 이 방법이 더 좋은것같은데
해결방법이 있는지 궁금합니다.
좋은 스킨 공유해주셔서 감사합니다!!^^
혹시 G5에서도 가능할까 적용해봤는데,, 마우스 오버로 별을 색상채우기는 가능하는데 유지되어서 저장이 안되네요
UTF-8버전으로 적용했는데도 글자가 깨지고요  ㅠㅠ G5에서 적용해서 오류인거 같은데 해결할수 있는 방법이 있을까요?? ㅠㅠ
취치포님,
G4에서 잘 사용하고 있습니다 !!

혹시, G5용으로 수정 배포해 주시거나, 구매가 가능한 지요 !!??
너무 감사합니다 ^^~
전체 5,853 |RSS
그누4 스킨 내용 검색

회원로그인

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