고수님들 부탁드립니다

고수님들 부탁드립니다

QA

고수님들 부탁드립니다

본문

이 부분이

 

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() 이 함수가 어디 있는지 모르지만 호출가능한 상태여야 합니다.

 

답변 고맙습니다

적용해 보니 이런 에러가 뜨네요

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

답변을 작성하시기 전에 로그인 해주세요.
전체 10,639
QA 내용 검색

회원로그인

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