별점이 높은 순서대로 게시글 순서를 불러오고싶습니다.
본문
리스트에서 별표5개와 0/100점 이 뜨는 부분입니다.
리스트순서를 별점이 높은 순서대로 불러오고 싶은데
adm/board_form.php에 어찌 수정해야되는지요/..?
<div class="td_subject" style="text-align:right">
<?php
$use_count = 0;
for ($jj=3; $jj<11; $jj++) {
if($board['bo_'.$jj.'_subj']==''){
continue;
}
$use_count++;
}
$point_parent_id = $list[$i]['wr_id'];
$point_sql = " select sum(wr_2+wr_3+wr_4+wr_5+wr_6+wr_7+wr_8+wr_9+wr_10) sum_point, (select count(*) from $write_table where wr_parent = '$point_parent_id' and wr_is_comment = '1') point_count from $write_table where wr_parent = '$point_parent_id' and wr_is_comment = '1' ";
$point_cmt = sql_fetch($point_sql);
$sum_point = $point_cmt['sum_point']==''? 0 : $point_cmt['sum_point'];
$point_count = $point_cmt['point_count']==''? 0 : $point_cmt['point_count'];
$calc_point = $point_count==0 ? 0 : $sum_point/($point_count*$use_count)/$board['bo_1']*100;
?>
<div class="star">
<?php for ($si=0; $si < floor($calc_point*0.05); $si++){ ?>
<img src="<?php echo $board_skin_url; ?>/img/icon_star.png" width="16" height="16">
<?php } ?>
<?php for ($si=0; $si < 5-floor($calc_point*0.05); $si++){ ?>
<img src="<?php echo $board_skin_url; ?>/img/icon_gray_star.png" width="16" height="16">
<?php } ?>
</div>
<!--<b style="color:#2E2E2E"><?php echo floor($calc_point); ?> / 100점</b>-->
</div>
이부분을 어찌 수정해야되는지요..?별점이 높은 순으로 글을 불러오고 싶습니다.
<option value="point_sql asc" <?php echo get_selected($board['bo_sort_field'], "point_sql asc"); ?>>point_sql asc : 별점높은순</option>
답변 2
http://gnuwiz.com/board_tip/19?sfl=wr_subject||wr_content&stx=%EC%A0%95%EB%A0%AC&sop=and
여분필드로 정렬순서 바꾸는 방법입니다.
해당 별이 있는 필드를 맞춰서 수정하시면됩니다.
소스 대강 보니 코멘트에 별점을 남기는 것 같은데요, 이 형태로는 별점순 정렬이 어렵습니다.
한다고 하더라도 성능상 매우 좋지 않구요.
별점 남기는 쪽 소스를 수정해서 별점 남길때마다 원게시글에 총점/별점남긴사람수/평균별점 정도로
3필드 정도 정보를 추가시키게 하고(또는 평균별점만 추가)
추가된 평균별점필드 기준으로 정렬을 시켜야 겠네요.
리스트에 평균점수와 별점 보여주는 부분도 해당 추가된 필드로 뿌려지게 하는게 좋습니다.
원 소스는 평점 남긴 사람이 많은 게시글이 있을수록 속도에 영향이 많이 갈 소스로 보이네요.
수정이 힘드시면 제작의뢰 하시는 걸 추천드립니다.