게시판 리스트 특정값 기준으로 정렬할때... 정보
게시판 리스트 특정값 기준으로 정렬할때...본문
게시물 별점(총점 계산값)으로 리스트를 정렬하고 싶은데요.
<?
$score = 0;
$all_score = 0;
if($view[wr_8] > 0) $score = $view[wr_7] / $view[wr_8];
$score = round($score,1);
if($view[wr_8] > 0) $all_score = $score * $view[wr_8];
?>
위와같이 view.skin.php 에서 wr_7 (별점)과 wr_8 (참여수) 을 이용해서 $all_score 라는 값을 얻었습니다.
list.skin.php (리스트스킨) 에서 $all_score 값을 이용해서 정렬 하고 싶은데
방법을 못찾겠습니다.
adm/board_form.php 에서 아래와 같이 추가했구요
<option value='all_score asc, wr_num, wr_reply'>all_score asc : 인기도 내림차순
<option value='all_score desc, wr_num, wr_reply'>all_score desc : 인기도 오름차순
bbs/list.php 에서 아래와 같이 추가했습니다.
$sst = preg_match("/^(wr_datetime|wr_hit|wr_good|wr_nogood|all_score|wr_7|wr_8)$/i", $sst) ? $sst : "";
근데 잘 안되네요.
에러메세지는 아래와 같습니다.
select * from g4_write_test where wr_is_comment = 0 order by all_score desc limit 0, 15
1054 : Unknown column 'all_score' in 'order clause'
error file : /bbs/board.php
해결 방법좀 알려주세요..ㅜㅜ
부탁드리겠습니다.
<?
$score = 0;
$all_score = 0;
if($view[wr_8] > 0) $score = $view[wr_7] / $view[wr_8];
$score = round($score,1);
if($view[wr_8] > 0) $all_score = $score * $view[wr_8];
?>
위와같이 view.skin.php 에서 wr_7 (별점)과 wr_8 (참여수) 을 이용해서 $all_score 라는 값을 얻었습니다.
list.skin.php (리스트스킨) 에서 $all_score 값을 이용해서 정렬 하고 싶은데
방법을 못찾겠습니다.
adm/board_form.php 에서 아래와 같이 추가했구요
<option value='all_score asc, wr_num, wr_reply'>all_score asc : 인기도 내림차순
<option value='all_score desc, wr_num, wr_reply'>all_score desc : 인기도 오름차순
bbs/list.php 에서 아래와 같이 추가했습니다.
$sst = preg_match("/^(wr_datetime|wr_hit|wr_good|wr_nogood|all_score|wr_7|wr_8)$/i", $sst) ? $sst : "";
근데 잘 안되네요.
에러메세지는 아래와 같습니다.
select * from g4_write_test where wr_is_comment = 0 order by all_score desc limit 0, 15
1054 : Unknown column 'all_score' in 'order clause'
error file : /bbs/board.php
해결 방법좀 알려주세요..ㅜㅜ
부탁드리겠습니다.
댓글 전체
all_score는 필드명이아닌 php소스상에서의 변수일뿐입니다
쿼리에 직접 계산식을 적용해보세요
SELECT * FROM g4_write_test WHERE wr_is_comment = 0 ORDER BY ROUND(wr_7/wr_8,1) DESC LIMIT 0, 15 이런식으로 쿼리가 실행되야하니
관리자의 옵션설정을 활용한다면
<option value='round(wr_7/wr_8,1) asc, wr_num, wr_reply'>all_score asc : 인기도 내림차순
<option value='round(wr_7/wr_8,1) desc, wr_num, wr_reply'>all_score desc : 인기도 오름차순
이런형식이 됍니다
쿼리에 직접 계산식을 적용해보세요
SELECT * FROM g4_write_test WHERE wr_is_comment = 0 ORDER BY ROUND(wr_7/wr_8,1) DESC LIMIT 0, 15 이런식으로 쿼리가 실행되야하니
관리자의 옵션설정을 활용한다면
<option value='round(wr_7/wr_8,1) asc, wr_num, wr_reply'>all_score asc : 인기도 내림차순
<option value='round(wr_7/wr_8,1) desc, wr_num, wr_reply'>all_score desc : 인기도 오름차순
이런형식이 됍니다
선택이란님// 정말 진심으로 너무너무 감사드립니다. 덕분에 잘 해결되었습니다!!! 역시 고수님은 틀리시네요 ㅜㅜ 대단!!!^^