별점주기 문의[이미지포함] > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

별점주기 문의[이미지포함] 정보

별점주기 문의[이미지포함]

본문




안녕하세요
눈팅 전문 조은아이 입니다.

다름이 아니구요 상단과 같은 스킨 제작 중 문제가 발생했습니다.
별점을 코멘트에서 주고 이를 합산하여 view 페이지에선 성공적으로 도출이되나
이미지와 같이 list.skin.php 파일에서 오류가 납니다.
오류 내용은 다음과 같습니다.
1. 게시판 내에 모든글에 별점(코멘트)이 전부 없거나, 전부 있어야만 정상적으로 모든 값이 출력됨
2. 모든 게시물에 별점이 없을때 중간게시물에 별점을 부여했을 경우 중간 게시물 이하의 모든 게시물은 같은 별점이 부과됨.
3. 게시물 사이에 평점이 없는 게시물이 있을경우 별점 표시가 엉망이 됨.

현재 이미지는 2번에 해당하는 오류입니다.

다음은 별점주기 소스 입니다.

list.skin.php
-----------------------------------------------------------
<?
  $row5_sql = " SELECT wr_10 FROM g4_write_$bo_table where wr_is_comment = '1' and wr_parent = '{$list[$i][wr_id]}' order by wr_10 ";
  $row5_result = mysql_query($row5_sql);

  $row6_sql = " SELECT wr_10 FROM g4_write_$bo_table where wr_is_comment = '1' and wr_parent = '{$list[$i][wr_id]}' order by wr_10 ";
  $row6_result = mysql_query($row6_sql);
  $row6 = mysql_num_rows($row6_result);
 


for ($r=0; $row5 = mysql_fetch_array($row5_result); $r++) {
 $p5 += $row5[wr_10];
}

if ($row6 > 0) {

  $total_sum5 = round($p5/$row6, 2);
  $sum5 = round($p5/$row6, 1);

}

?>전시평점 : </font><span style="vertical-align:-2px;"><?
  if ($sum5 <= 0.0) {
   echo "<img src='{$board_skin_path}/img/star_00.gif'>";
  }elseif ($sum5 <= 1.0) {
      echo "<img src='{$board_skin_path}/img/star_01.gif'>";
  }elseif ($sum5 <= 2.0) {
      echo "<img src='{$board_skin_path}/img/star_02.gif'>";
  }elseif ($sum5 <= 3.0) {
      echo "<img src='{$board_skin_path}/img/star_03.gif'>";
  }elseif ($sum5 <= 4.0) {
      echo "<img src='{$board_skin_path}/img/star_04.gif'>";
  }elseif ($sum5 <= 5.0) {
      echo "<img src='{$board_skin_path}/img/star_05.gif'>";
  }elseif ($sum5 <= 6.0) {
      echo "<img src='{$board_skin_path}/img/star_06.gif'>";
  }elseif ($sum5 <= 7.0) {
      echo "<img src='{$board_skin_path}/img/star_07.gif'>";
  }elseif ($sum5 <= 8.0) {
      echo "<img src='{$board_skin_path}/img/star_08.gif'>";
  }elseif ($sum5 <= 9.0) {
      echo "<img src='{$board_skin_path}/img/star_09.gif'>";
  }elseif ($sum5 <= 10.0) {
      echo "<img src='{$board_skin_path}/img/star_10.gif'>";
  }  
  ?></span>
-----------------------------------------------------------


즉, 해당 게시물의 별점 평균값만을 가져와야 하는데, 값이 없을경우 꼬여버리는 현상이 나타납니다.
부디 도와주시길!!

혹시 편법으로 게시물 작성시 코멘트 별점 0점짜리 1개가 자동으로 달리게 하는 방법은 어떨까 생각해봅니다만.. 이또한 어찌할지 막막하네요 ㅜㅜ

댓글 전체

"order by wr_10"은 필요 없는 것 같은데 왜 붙이셨나요?

for ($r=0; $row5 = mysql_fetch_array($row5_result); $r++) {
여기서 $r는 불필요한 변수인데 왜 사용하셨나요?

if ($row6 > 0) {

  $total_sum5 = round($p5/$row6, 2);
  $sum5 = round($p5/$row6, 1);

}
다음에 다음을 추가하면 2번은 해결될 것 같습니다.
else {
  $total_sum5 = "0.00";
  $sum5 = "0.0";
}


살짝광고 : http://gnucomun.net/ 그누보드 기반 커뮤니티 운영자들 모임입니다.^^
전 짜집기만 할줄알지 수식은 전혀모르는 허당입니다. 죄송..
우선 말씀대로 2번은 해결이 되는군요 ^^
하지만 게시물 사이사이 별점이 없을경우에는 먹통이 되버리네요 ㅜㅜ
아 멀고도 험하군요 ^^그냥 리스트에서는 포기해야할까봐요 답변감사합니다.

혹시 내일까지 3번 해결이 안되면 말러님꺼 채택할께요
저의 커뮤니티 완성되면 말러님 홈피 가입할꺼에요!! ㅎ


포기했다능... ㅜㅜ 좀 힘들군요 별점의 세계란.. ㅜㅜ
위처럼 else로 작업해도 되고..
소스작업된게 대체로 빈약한 부분이 좀있는듯 하네요..

1.for문에서 확정된값이 아닌 계산식을 최대값안에 넣게되면 속도상으로 느린부분이 발생될수 있습니다..

2.똑같은 쿼리를 2번날리시기 보다는 다른 변수에 할당해두시는게 속도상으론 더 빠릅니다.

3.에코를 매번 하시기 보다는 변수값에 대입해두고 후에 print 하시는게 낫습니다.



<?
  $row5_sql = " SELECT wr_10 FROM g4_write_$bo_table where wr_is_comment = '1' and wr_parent = '{$list[$i][wr_id]}' order by wr_10 ";
  $row5_result = mysql_query($row5_sql);
  $row5 = mysql_fetch_array($row5_result);

$p5=0;
for ($i=0; $i<$row5;$i++) {
 $p5 += $row5[wr_10];
}

if ($p5 > 0) {
  $total_sum5 = round($p5/$row5, 2);
  $sum5 = round($p5/$row5, 1);
}else{
  $total_sum5=0;
  $sum5=0;
}


  if ($sum5 <= 0.0) {
  $sum_print= "<img src='{$board_skin_path}/img/star_00.gif'>";
  }elseif ($sum5 <= 1.0) {
      $sum_print= "<img src='{$board_skin_path}/img/star_01.gif'>";
  }elseif ($sum5 <= 2.0) {
      $sum_print= "<img src='{$board_skin_path}/img/star_02.gif'>";
  }elseif ($sum5 <= 3.0) {
      $sum_print= "<img src='{$board_skin_path}/img/star_03.gif'>";
  }elseif ($sum5 <= 4.0) {
      $sum_print= "<img src='{$board_skin_path}/img/star_04.gif'>";
  }elseif ($sum5 <= 5.0) {
      $sum_print= "<img src='{$board_skin_path}/img/star_05.gif'>";
  }elseif ($sum5 <= 6.0) {
      $sum_print= "<img src='{$board_skin_path}/img/star_06.gif'>";
  }elseif ($sum5 <= 7.0) {
      $sum_print= "<img src='{$board_skin_path}/img/star_07.gif'>";
  }elseif ($sum5 <= 8.0) {
      $sum_print= "<img src='{$board_skin_path}/img/star_08.gif'>";
  }elseif ($sum5 <= 9.0) {
      $sum_print= "<img src='{$board_skin_path}/img/star_09.gif'>";
  }elseif ($sum5 <= 10.0) {
      $sum_print= "<img src='{$board_skin_path}/img/star_10.gif'>";
  } 
  ?>


전시평점&nbsp;:&nbsp;</font><span style="vertical-align:-2px;"><?=$sum_print?></span>
어떤 형태인지 감이 오긴 하는데요
막상 이 수식을 적용하니 무한루프가 걸리네요 반복계산되는 부분이 있는듯...
한번더 봐주시길 ㅜㅜ

그래도 답변 정말 감사드려요!!!!!!!!
전체 18 |RSS
그누4 질문답변 내용 검색

회원로그인

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