쇼핑몰에 별점 표시하는 방법
본문
안녕하세요, 쇼핑몰에 별점 표시하는 방법 여쭙고자 질문 남깁니다.
사용후기 쓰기 버튼 누르면 나오는 곳에 보면 이런식으로 별점을 남길 수 있잖아요? 이 별점의 평균?을 매겨서
이런식으로 별점 평균과 함께 후기 갯수를 남기고 싶습니다. 코드는 아래처럼 짜놨습니다.
<div>
<?php if ($star_score) { ?>
<h4 class="sound_only">고객 평점</h4>
<img
src="<?php echo G5_SHOP_URL; ?>/img/s_star<?php echo $star_score?>.png"
alt=""
class="sit_star">
<span class="st_bg "></span>
<?php } ?>
<?php
$sql = " select count(*) as cnt from `{$g5['g5_shop_item_use_table']}` where it_id = '{$it_id}' and is_confirm = '1' ";
$row = sql_fetch($sql);
$item_use_count = $row['cnt'];
echo "<span>(".$item_use_count.")</span>";
?>
</div>
실행하면 이렇게 나옵니다. 후기 갯수 추출은 잘되는데 별점 추출이 되지 않습니다.... 별점 추출하고 표시하는건 대체 어떻게 하는걸까요? ㅠㅠ
!-->답변 2
위의 코드를 보면 후기 갯수는 정상적으로 추출되고 표시되고 있지만, 별점은 $star_score 변수를 통해 어떻게 계산되는지 알 수 없습니다. 별점을 추출하는 부분이 코드에 누락되었거나, 해당 정보를 가져오는 쿼리가 없는 것으로 보입니다.
일반적으로 별점은 데이터베이스에서 가져와야 하므로, 별점을 계산하는 방법이나 별점이 저장된 위치를 알려주지 않았기 때문에, 별점을 가져오는 부분을 추가해야 할 것으로 보입니다.
다음을 참고 하셔서 원하시는 구조로 구현하시면 되지 않을까 합니다.
<div>
<?php
$sql = "SELECT AVG(star) AS avg_star, COUNT(*) AS review_count FROM `{$g5['g5_shop_item_use_table']}` WHERE it_id = '{$it_id}' AND is_confirm = '1'";
$row = sql_fetch($sql);
// 별점이 있는 경우에만 표시
if ($row['avg_star'] !== null) {
$star_score = round($row['avg_star']); // 별점 반올림 또는 내림
?>
<h4 class="sound_only">고객 평점</h4>
<img src="<?php echo G5_SHOP_URL; ?>/img/s_star<?php echo $star_score; ?>.png" alt="" class="sit_star">
<span class="st_bg "></span>
<?php } ?>
<?php
$review_count = $row['review_count'];
echo "<span>($review_count)</span>";
?>
</div>
이렇게 하면 별점의 평균을 계산하고, 이를 반올림하여 이미지 파일의 이름으로 사용하여 별점을 표시하게 됩니다. 실제 데이터베이스 구조와 필드명에 따라 적절히 수정해 주시면 될 것 같습니다.
참고 URL
팁자료실 : https://sir.kr/g5_tip?sca=&sfl=wr_subject%7C%7Cwr_content&stx=%EB%B3%84%EC%A0%90
스킨 : https://sir.kr/g5_skin?sca=&sfl=wr_subject%7C%7Cwr_content&stx=%EB%B3%84%EC%A0%90
!-->
보통, 여분필드로 값을 입력받고, 값별로 해당 별점 이미지를 보여주는 방식으로 구현합니다.