bbs/view.php가 이상하다... (1)

불당   
   조회 9777   추천 0    

view.php이 아래와 같은 코드가 있습니다.

전체 게시글 보기를 체크하지 않으면, 앞의 글/뒤에 글을 찾아주는 것 입니다.

ajax로 할까 생각했는데, 갤러리의 경우에는 그게 머리 아플 것 같아서 (터치를 할 때) 소스를 손보기로 했습니다.


아래의 코드를 보겠습니다. 문제가 된다고 생각하는 것은 wr_reply < '{$write[wr_reply]}' 입니다.

답글이 아니라면 wr_reply에는 아무 것도 없습니다.

아무 것도...


    $sql = " select wr_id, wr_subject from {$write_table} where wr_is_comment = 0 and wr_num = '{$write['wr_num']}' and wr_reply < '{$write['wr_reply']}' {$sql_search} order by wr_num desc, wr_reply desc limit 1 ";


그래서 아래의 SQL은 답글이 없다면 완전히 의미없이 돌아가는 것 입니다.

대부분의 글에 답글이 없으니... 99.99% 의미없이 SQL 돌리고 있구요,.


=== 원래코드 ===


if (!$board['bo_use_list_view']) {
    if ($sql_search)
        $sql_search = " and " . $sql_search;

    // 윗글을 얻음
    $sql = " select wr_id, wr_subject from {$write_table} where wr_is_comment = 0 and wr_num = '{$write['wr_num']}' and wr_reply < '{$write['wr_reply']}' {$sql_search} order by wr_num desc, wr_reply desc limit 1 ";
    $prev = sql_fetch($sql);
    // 위의 쿼리문으로 값을 얻지 못했다면
    if (!$prev['wr_id'])     {
        $sql = " select wr_id, wr_subject from {$write_table} where wr_is_comment = 0 and wr_num < '{$write['wr_num']}' {$sql_search} order by wr_num desc, wr_reply desc limit 1 ";
        $prev = sql_fetch($sql);
    }

    // 아래글을 얻음
    $sql = " select wr_id, wr_subject from {$write_table} where wr_is_comment = 0 and wr_num = '{$write['wr_num']}' and wr_reply > '{$write['wr_reply']}' {$sql_search} order by wr_num, wr_reply limit 1 ";
    $next = sql_fetch($sql);
    // 위의 쿼리문으로 값을 얻지 못했다면
    if (!$next['wr_id']) {
        $sql = " select wr_id, wr_subject from {$write_table} where wr_is_comment = 0 and wr_num > '{$write['wr_num']}' {$sql_search} order by wr_num, wr_reply limit 1 ";
        $next = sql_fetch($sql);
    }
}


심플하게 해결해 보겠습니다.

$write[wr_reply]에 값이 있으면... 이거를 돌리고 없으면... 밑에거를 돌리면 되는 겁니다.



if (!$board[bo_use_list_view]) {
    if ($sql_search)
        $sql_search = " and " . $sql_search;

    // 윗글을 얻음
    if ($write['wr_reply']) {
        // 답글일 때. 답글이 아닐 때는 돌려봐야 답이 없습니다.
        $sql = " select wr_id, wr_subject from $write_table where wr_is_comment = 0 and wr_num = '$write[wr_num]' and wr_reply < '$write[wr_reply]' $sql_search order by wr_num desc, wr_reply desc limit 1 ";
        $prev = sql_fetch($sql);
    }
    // 위의 쿼리문으로 값을 얻지 못했다면
    if (!$prev[wr_id])     {
        $sql = " select wr_id, wr_subject from $write_table where wr_is_comment = 0 and wr_num < '$write[wr_num]' $sql_search order by wr_num desc, wr_reply desc limit 1 ";
        $prev = sql_fetch($sql);
    }

    // 아래글을 얻음
    if ($write['wr_reply']) {
        // 답글일 때. 답글이 아닐 때는 돌려봐야 답이 없습니다.
        $sql = " select wr_id, wr_subject from $write_table where wr_is_comment = 0 and wr_num = '$write[wr_num]' and wr_reply > '$write[wr_reply]' $sql_search order by wr_num, wr_reply limit 1 ";
        $next = sql_fetch($sql);
    }
    // 위의 쿼리문으로 값을 얻지 못했다면
    if (!$next[wr_id]) {
        $sql = " select wr_id, wr_subject from $write_table where wr_is_comment = 0 and wr_num > '$write[wr_num]' $sql_search order by wr_num, wr_reply limit 1 ";
        $next = sql_fetch($sql);
    }
}


- opencode.co.kr -
BBS코리아할인판매
독일,일본,전제품,전차종,수입차,국산차,초경량휠,휠119단독판매 및 A/S
BBS타이어파트너
정품 수입국산 타이어 휠 전문쇼핑몰 전국무료배송 전국장착점운영 고양시일산소재
부산 휠09
국민. 하나. 현대카드 12개월무이자할부지원. BC. 삼성카드 3개월무이자할부지원
파워링크 AD   클릭초이스등록


제목Page 1/4
2008-04   14553   불당
2013-05   13686   불당
2016-08   38917   불당
2016-08   5491   불당
2016-08   5450   불당
2016-08   5307   불당
2016-08   38917   불당
2015-10   6580   불당
2014-02   9608   불당
2014-02   9663   불당
2014-02   9778   불당
2013-06   12209   불당
2013-05   13686   불당
2013-05   12819   불당
2013-01   15165   불당
2011-12   17050   불당
2011-12   13304   불당
2011-09   14416   불당
2011-09   12992   불당
2011-06   13071   불당
2011-01   12647   불당
2011-01   15271   불당
2011-01   15935   불당