new.php 베스트 게시판 관련 다시한번 질문 드립니다ㅠ
본문
$sql = " select a.*, b.bo_subject, b.bo_mobile_subject, c.gr_subject, c.gr_id {$sql_common} {$sql_order} limit {$from_record}, {$rows} ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
$tmp_write_table = $g5['write_prefix'].$row['bo_table'];
if ($row['wr_id'] == $row['wr_parent']) {
// 원글
$comment = "";
$comment_link = "";
$row2 = sql_fetch(" select * from {$tmp_write_table} where wr_id = '{$row['wr_id']}'and wr_good-wr_nogood>=1 ");
$list[$i] = $row2;
$name = get_sideview($row2['mb_id'], get_text(cut_str($row2['wr_name'], $config['cf_cut_name'])), $row2['wr_email'], $row2['wr_homepage']);
// 당일인 경우 시간으로 표시함
$datetime = substr($row2['wr_datetime'],0,10);
$datetime2 = $row2['wr_datetime'];
if ($datetime == G5_TIME_YMD) {
$datetime2 = substr($datetime2,11,5);
} else {
$datetime2 = substr($datetime2,5,5);
}
} else {
// 코멘트
$comment = '[코] ';
$comment_link = '#c_'.$row['wr_id'];
$row2 = sql_fetch(" select * from {$tmp_write_table} where wr_id = '{$row['wr_parent']}' ");
$row3 = sql_fetch(" select mb_id, wr_name, wr_email, wr_homepage, wr_datetime from {$tmp_write_table} where wr_id = '{$row['wr_id']}' ");
$list[$i] = $row2;
$list[$i]['wr_id'] = $row['wr_id'];
$list[$i]['mb_id'] = $row3['mb_id'];
$list[$i]['wr_name'] = $row3['wr_name'];
$list[$i]['wr_email'] = $row3['wr_email'];
$list[$i]['wr_homepage'] = $row3['wr_homepage'];
$name = get_sideview($row3['mb_id'], get_text(cut_str($row3['wr_name'], $config['cf_cut_name'])), $row3['wr_email'], $row3['wr_homepage']);
// 당일인 경우 시간으로 표시함
$datetime = substr($row3['wr_datetime'],0,10);
$datetime2 = $row3['wr_datetime'];
if ($datetime == G5_TIME_YMD) {
$datetime2 = substr($datetime2,11,5);
} else {
$datetime2 = substr($datetime2,5,5);
}
}
현재 위와 같은 방식으로 new.php에서 추천수(wr_good)-비추천수(wr_nogood)를 뺀 값이 1 이상인 글들만 추출하도록 하였습니다.
그런데 추출을 하니 아래 사진과 같이 1이상인 글들만 출력이 되긴하는데 1이상이 아닌 나머지 글들이 아래처럼 텅 빈 상태로 표시됩니다. (아래 사진의 게시글 1,2,3,4,7,8,9,10번 처럼)
추천-비추천이 1이상이 아닌 글들은 아예 흔적도 안보이게 하고 싶은데..
아래 텅빈것처럼 보이는 글들을 어떻게하면 안보이게 할 수 있을까요??
어제 새벽에 답변 달아주신 분이 계시긴 했는데 조언 들은대로 적용해봐도 바뀌질 않아서 재차 질문드립니다 ㅜㅜ
!-->
답변 7
현재 위와 같은 방식으로 new.php에서 추천수(wr_good)-비추천수(wr_nogood)를 뺀 값이 1 이상인 글들만 추출하도록 하였습니다...
==
실제 code는
추출? 한 다음 추천수 조건 검사를 하도록 되어 있네요.
어찌 되었건 이 방식은 한계가 있고
제대로 하려면
bbs/new.php에서 query 문을 변경해야합니다.그리고
g5_boatd_new에 컬럼을 추가해서
해당 게시물의 추천수 변화가 있을 때마다
추가한 컬럼값을 변경하고
이 컬럼을 조건으로 query 문을 변경해 주면 될 듯합니다.
//원글 부분 $list[$i] = $row2; 바로 위에 넣으세요
if(!$row2['wr_id']) continue;
그리고 스킨에서
for ($i=0; $i<count($list); $i++){
if( !isset($list[$i]['wr_id'])) continue; //<---------추가
그런데 댓글도 원글과 동일한 조건의 게시물에 대한 댓글만 출력해야 하는 것아닌가요?
위와 같이 하면 원하는 출력은 되지만 문제는 하단 페이징이 리스트수와 맞지않게 됩니다
모든 것을 제대로 하려면 전체 게시물수, 페이징 등 모두 수정해야 합니다
$sql 뽑아오실때 일단 전체로 뽑아오는 쿼리로 사용되고 있을거로 보입니다.
제생각에는 리스트를 뽑아오실때 선 조건을 걸으셔야 될거 같네요
new.php 순종 소스를 보니까
$sql_common = " from {$g5['board_new_table']} a, {$g5['board_table']} b, {$g5['group_table']} c where a.bo_table = b.bo_table and b.gr_id = c.gr_id and b.bo_use_search = 1 ";
이 조건이 걸려있는데
이것을 수정해야될것으로 보입니다.
wr_good 이 데이터가 있어야 하고 추천 - 비추천이 1이상이라고 생각하시고 계시니까
where 에 ' wr_good 데이터가 있어야 하고, wr_good 이 wr_nogood 보다 크면 ' 이라는 조건을 추가해주면 원하시는 조건이 될거 같아 보입니다.
예를 들자면
$sql_common 정의 된 곳 아래줄에
$sql_common .= " and b.wr_good > 0 and b.wr_good > b.wr_nogood ";
전 이거를 추가해 볼듯 합니다.
리스트 페이지 보면 반복문 처리하는부분이 있을것에요 . 그부분에서 추가 작업이 해줘야 할듯 합니다. 하여 그부분을 한번 보여 주세요. 올린 소스를 보면 정상적으로 모두 보여 주는게 맞는것 같습니다.
$row2 = sql_fetch(" select * from {$tmp_write_table} where wr_id = '{$row['wr_id']}'and wr_good-wr_nogood>=1 ");
→
$row2 = sql_fetch(" select * from {$tmp_write_table} where wr_id = '{$row['wr_id']}'and wr_good-wr_nogood>=1 ");
if (!$row2['wr_id'])
continue;
전체 글을 카운트 하는곳에서도 적용하셔야 합니다.
본문 글에서는 걸러냈지만 전체글 카운트 하는곳에서는 안하셔서 그렇습니다.
안녕하세요. SkyR님
혹시 어떻게 해결하셨는지 알수있을까요?