게시판에서 공지글 재출력 걸러내기 입니다. > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

게시판에서 공지글 재출력 걸러내기 입니다. 정보

게시판에서 공지글 재출력 걸러내기 입니다.

본문

게시판에서 공지글이 일반 리스트 화면에도 같이 뜨는걸
막기 위한 것입니다.

다른분이 올려두신 팁이 있는데, 좀 다르기에 글 남깁니다.

제가 간단히 테스트 해본 바로는 인덱스가 걸리는데, 정확한지는 모르겠네요.


/bbs/list.php 에서 아래의 부분을

if ($sca || $stx)
{
    $sql = " select distinct wr_parent from $write_table where $sql_search $sql_order limit $from_record, $board[bo_page_rows] ";
}
else
{
    $sql = " select * from $write_table where wr_is_comment = 0 $sql_order limit $from_record, $board[bo_page_rows] ";
}
$result = sql_query($sql);

// 년도 2자리
$today2 = $g4[time_ymd];

$list = array();
$i = 0;

if (!$sca && !$stx)
{
    $arr_notice = split("\n", trim($board[bo_notice]));
    for ($k=0; $k<count($arr_notice); $k++)
    {
        $row = sql_fetch(" select * from $write_table where wr_id = '$arr_notice[$k]' ");
        if (!$row[wr_id])
            continue;

        $list[$i] = get_list($row, $board, $board_skin_path, $board[bo_subject_len]);
        $list[$i][is_notice] = true;

        $i++;
    }
}


///////////////////////////////////////////////////////////////////
아래와 같이 수정하시면 됩니다.

$list = array();
$i = 0;

if (!$sca && !$stx)
{
    $arr_notice = split("\n", trim($board[bo_notice]));
    for ($k=0 , $ck = count($arr_notice); $k < $ck; $k++)
    {
        $row = sql_fetch(" select * from $write_table where wr_id = '$arr_notice[$k]' ");
        if (!$row[wr_id])
            continue;

        $list[$i] = get_list($row, $board, $board_skin_path, $board[bo_subject_len]);
        $list[$i][is_notice] = true;

        $notice_order .= " and wr_id != '$arr_notice[$k]'";

        $i++;
    }
}

// if(!$board[bo_1]) $notice_order = ''; //게시판 설정에서 공지 재출력 유무를 조정할 경우

if ($sca || $stx)
{
    $sql = " select distinct wr_parent from $write_table where $sql_search $sql_order limit $from_record, $board[bo_page_rows] ";
}
else
{
    $sql = " select * from $write_table where wr_is_comment = 0 $notice_order $sql_order limit $from_record, $board[bo_page_rows] ";
}
$result = sql_query($sql);

// 년도 2자리
$today2 = $g4[time_ymd];

//////////////////////////////////////////////////////////////////////////

쿼리문을 잘 몰라서 $notice_order 작성이 허접합니다.
혹 더 나은 작성법을 아시면 좀 가르쳐 주시길 바랍니다.
인덱스를 포함해서 문제가 발생할 수 있다면 좀 알려주시면 감사하겠습니다.

그럼 즐거운 하루되세요.
추천
4

댓글 19개

전체 78 |RSS
그누4 팁자료실 내용 검색

회원로그인

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