고수님들 부탁드립니다 채택완료
이 부분이
if (is_pay_table($tmp_write_table)) { $temp_sql = " AND wr_65 != 'temp' "; } else { $temp_sql = ''; }
아래소스에서 특정게시물을 걸러주는데요
-----------------------------------------------------------------------
if (!defined('_GNUBOARD_')) exit; /// 함수 정의 시작
// 최신글 추출 - 선택한 그룹별로 원하는 수만큼 보여줌 function latest_group($skin_dir = "", $gr_id, $rows = 10, $subject_len = 40, $category = "", $orderby = "") { global $config; global $g4;
$list = array(); $limitrows = $rows;
$sqlgroup = " select bo_table, bo_subject from $g4[board_table] where gr_id = '$gr_id' and bo_use_search=1 order by bo_order_search"; $rsgroup = sql_query($sqlgroup);
if ($skin_dir) $latest_skin_path = "$g4[path]/skin/latest/$skin_dir"; else $latest_skin_path = "$g4[path]/skin/latest/$config[cf_latest_skin]";
for ($j = 0, $k = 0; $rowgroup = sql_fetch_array($rsgroup); $j++) { $bo_table = $rowgroup[bo_table];
// 테이블 이름구함 $sql = " select * from {$g4[board_table]} where bo_table = '$bo_table'"; $board = sql_fetch($sql);
$tmp_write_table = $g4[write_prefix] . $bo_table; // 게시판 테이블 실제이름
// 옵션에 따라 정렬 if (is_pay_table($tmp_write_table)) { $temp_sql = " AND wr_65 != 'temp' "; } else { $temp_sql = ''; }
$sql = "select * from $tmp_write_table where wr_is_comment = 0 {$temp_sql} "; $sql .= (!$category) ? "" : " and ca_name = '$category' "; $sql .= (!$orderby) ? " order by wr_id desc " : " order by $orderby desc, wr_id desc "; $sql .= " limit $limitrows";
$result = sql_query($sql);
for ($i = 0; $row = sql_fetch_array($result); $i++, $k++) {
if (!$orderby) $op_list[$k] = $row[wr_datetime]; else { $op_list[$k] = is_string($row[$orderby]) ? sprintf("%-256s", $row[$orderby]) : sprintf("%016d", $row[$orderby]); $op_list[$k] .= $row[wr_datetime]; }
$list[$k] = get_list($row, $board, $latest_skin_path, $subject_len);
$list[$k][bo_table] = $board[bo_table]; $list[$k][bo_subject] = $board[bo_subject];
$list[$k][bo_wr_subject] = cut_str($board[bo_subject] . $list[$k][wr_subject], $subject_len); } } if ($k > 0) array_multisort($op_list, SORT_DESC, $list); if ($k > $rows) array_splice($list, $rows);
ob_start(); include "$latest_skin_path/latest.skin.php"; $content = ob_get_contents(); ob_end_clean(); return $content; }
/// 함수 정의 끝
----------------------------------------------------------------------------------
아래 소스에서도 똑같은 게시물을 걸러내려면
어디를 수정해야 하는지 고수님들 부탁드립니다
if (!defined('_GNUBOARD_')) exit;
/* izen.group.lib.php 제작일 : 2006-12-08
지정 기간제 히트순 최근 게시물 수정본 http://www.sir.co.kr/bbs/tb.php/g4_tiptech/7328
그룹 최신글 관련하여 통합하도록 하였다. 정렬 필드값에 의해서 SQL 문을 추가하도록 하면 된다.
izen_group('스킨', '그룹명', 정렬필드, 출력갯수, 자를 문자열, 최근 몇일간을 출력할 것인가?); 예) echo izen_group('best10', '06', wr_hit, 10, 28, 30); */
# 인기글 function izen_usort1($a, $b) { return $b['wr_hit'] - $a['wr_hit']; }
# 헤드라인 function izen_usort2($a, $b) { return $b['wr_good'] - $a['wr_good']; }
# 최신글 추출 function izen_group($skin_dir="", $gr_id, $izen_sort, $rows=10, $subject_len=40, $listdate) { global $g4;
$nowYmd = date(Ymd); # 시작시간을 구합니다. $time = time(); $startYmd = date("Ymd",strtotime("-".$listdate." day", $time));
if ($skin_dir) { $latest_skin_path = "$g4[path]/skin/latest/$skin_dir"; } else { $latest_skin_path = "$g4[path]/skin/latest/basic"; }
$list = array();
$sql= " select bo_table from {$g4['board_table']} where gr_id='$gr_id' and bo_use_search='1' order by bo_order_search "; $ress = sql_query($sql); for($i=0, $ii=0; $board=sql_fetch_array($ress); $ii++) { $tmp_write_table = $g4['write_prefix'] . $board['bo_table']; # 게시판 테이블 전체이름 #$sql = "select * from `$tmp_write_table` where wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' order by $sort desc limit 0, $rows ";
# 정렬 필드에 의해서 전체적으로 정렬, 관리한다. if ($izen_sort == 'wr_hit') { $sql_gr_Q = " wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' order by $izen_sort desc limit 0, $rows "; } elseif ($izen_sort == 'wr_scrap') { $sql_gr_Q = " wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' and wr_scrap <> 0 order by $izen_sort desc limit 0, $rows "; } elseif ($izen_sort == 'wr_datetime') # wr_1 헤드라인 { $sql_gr_Q = " wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' and wr_1 = 1 order by $izen_sort desc limit 0, $rows "; } elseif ($izen_sort == 'wr_good') # { $sql_gr_Q = " wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' and wr_good <> '0' order by $izen_sort desc limit 0, $rows "; } elseif ($izen_sort == 'wr_id') { $sql_gr_Q = " wr_is_comment <> '1' order by $izen_sort desc limit 0, $rows "; }
$sql = " select * from `$tmp_write_table` where $sql_gr_Q "; $result = sql_query($sql);
#for (; $row=sql_fetch_array($result); $i++) # *오류* 전체 게시물 가운데 날짜에 상관없이 히트순으로 지정한 갯수만큼 출력된다. for ($i==0; $row=sql_fetch_array($result); $i++) { $list[$i] = get_list($row, $board, $latest_skin_path, $subject_len, $listdate); } }
if ($izen_sort == 'wr_hit') { usort($list, 'izen_usort1'); }
elseif ($izen_sort == 'wr_good') { usort($list, 'izen_usort2'); }
$list= array_slice($list, 0, $rows);
ob_start(); include "$latest_skin_path/latest.skin.php"; $content = ob_get_contents(); ob_end_clean();
return $content; } ?>
답변 1개
$sql = " select * from `$tmp_write_table` where $sql_gr_Q ";
if (is_pay_table($tmp_write_table)) $sql.=" AND wr_65 != 'temp' "; $result = sql_query($sql);
is_pay_table() 이 함수가 어디 있는지 모르지만 호출가능한 상태여야 합니다.
답변에 대한 댓글 2개
이렇게 해서 나오는 에러 메시지를 올려 보세요.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
적용해 보니 이런 에러가 뜨네요
AND wr_65 != 'temp'
1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND wr_65 != 'temp'' at line 1