테스트 사이트 - 개발 중인 베타 버전입니다

뷰페이지 이전 다음 다시 질문드려요ㅠㅠ 채택완료

소울e 6년 전 조회 3,211

답글은 건너뛰고 이전페이지 다음페이지로 넘어가려고 하는데

 

bbs/view.php에 블랙캣님 안내로 wr_id = wr_parent 구문을 추가해서

 

다음페이지로 넘어가는부분은 정상적으로 답글 건너뛰고 넘어가집니다

 

근데 이전페이지로 넘어가는건 아무리 해도 답글이 그대로 나오네요 ㅠㅠ

 

소스 적용한 부분 한번 봐 주시면 감사하겠습니다!

 

 

</p>

<p>// 윗글을 얻음</p>

<p>$sql = " select wr_id, wr_subject, wr_comment, wr_datetime 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 ";</p>

<p>$prev = sql_fetch($sql);</p>

<p>// 위의 쿼리문으로 값을 얻지 못했다면</p>

<p>if (!$prev['wr_id']) {</p>

<p>$sql = " select wr_id, wr_subject, wr_comment, wr_datetime 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 ";</p>

<p>$prev = sql_fetch($sql);</p>

<p>    }</p>

<p> </p>

<p>// 아래글을 얻음</p>

<p>$sql = " select wr_id, wr_subject, wr_comment, wr_datetime from wr_id = wr_parent {$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 "; // 이곳 from절 뒤에 wr_id = wr_parent 추가한 후 다음페이지 넘어가는건 정상작동함</p>

<p>$next = sql_fetch($sql);</p>

<p>// 위의 쿼리문으로 값을 얻지 못했다면</p>

<p>if (!$next['wr_id']) {</p>

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

<p>$next = sql_fetch($sql);</p>

<p>    }</p>

<p>

 

윗글을 얻음에는 어떻게 해야 잘 건너뛰어질까요?;;

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
6년 전

if($bo_table!='test'){
    // 윗글을 얻음
    $sql = " select wr_id, wr_subject, wr_datetime 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, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num < '{$write['wr_num']}' and wr_reply='' {$sql_search} order by wr_num desc, wr_reply desc limit 1 ";
        $prev = sql_fetch($sql);
    }
if($bo_table!='test'){
    // 아래글을 얻음
    $sql = " select wr_id, wr_subject, wr_datetime 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, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num > '{$write['wr_num']}' and wr_reply='' {$sql_search} order by wr_num, wr_reply limit 1 ";
        $next = sql_fetch($sql);
    }
}

 

모든 게시판에 적용하려면 if($bo_table!='test'){ <---if문 제거

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

소울e
6년 전
윽 잘되는 줄 알았는데 착각했습니다,
아랫글로 이동하는 것은 답글이 그대로 노출되나 윗글로 이동하는건 아주 잘 됩니다!

그래서 아랫글로 가는건 원래 되던대로 놔두고 윗글만 적용하니 잘 되는 것 같습니다!

여러 조건에서 테스트 후 문제 있으면 댓글로 남기겠습니다 ^^


현재 이전, 다음글 이동시 답글은 건너뛰는 쿼리


// 윗글을 얻음
$sql = " select wr_id, wr_subject, wr_datetime 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, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num < '{$write['wr_num']}' and wr_reply='' {$sql_search} order by wr_num desc, wr_reply desc limit 1 ";
$prev = sql_fetch($sql);
}

// 아래글을 얻음
$sql = " select wr_id, wr_subject, wr_comment, wr_datetime from wr_id = wr_parent {$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, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num > '{$write['wr_num']}' and wr_reply='' {$sql_search} order by wr_num, wr_reply limit 1 ";
$next = sql_fetch($sql);

댓글을 작성하려면 로그인이 필요합니다.

// 윗글

$sql = "SELECT wr_id, wr_subject, wr_datetime FROM ".$write_table." WHERE wr_is_comment = 0 AND wr_id = wr_parent AND wr_reply = '' AND wr_id > ".$wr_id." ".$sql_search." LIMIT 1";

 

//아랫글

$sql = "SELECT wr_id, wr_subject, wr_datetime FROM ".$write_table." WHERE wr_is_comment = 0 AND wr_id = wr_parent AND wr_reply = '' AND wr_id < ".$wr_id." ".$sql_search." LIMIT 1";

 

이렇게 하면 되지 않을까 싶네요.

re 안 붙고 댓글도 아닌 무조건 부모글끼리만 검색해서 위로 아래로 갖고 오는...

로그인 후 평가할 수 있습니다

답변에 대한 댓글 6개

소울e
6년 전
감사합니다! 테스트해보겠습니다
소울e
6년 전
헉.. 적용해보니 부모글 하나씩 이동이 아니라 예상치 못한 곳으로 휙휙 날아가 버리네요;;;
왕계란
6년 전
// 윗글
SELECT wr_id, wr_subject, wr_datetime FROM ".$write_table." WHERE wr_is_comment = 0 AND wr_id = wr_parent AND wr_reply = '' AND wr_id > ".$wr_id." ".$sql_search." ORDER BY wr_id ASC LIMIT 1

// 아랫글
SELECT wr_id, wr_subject, wr_datetime FROM ".$write_table." WHERE wr_is_comment = 0 AND wr_id = wr_parent AND wr_reply = '' AND wr_id < ".$wr_id." ".$sql_search." ORDER BY wr_id DESC LIMIT 1

제가 ORDER BY를 테스트하면서 안 넣었네요.
소울e
6년 전
아.. 제가 쿼리 해석을 조금만 할줄 알았어도 ㅠㅠ
혹시 두번째 테스트하셨던 것은 잘 이동되었나요? 저는 아까 앞뒤로 날아가던것의 반 정도로 날아가는 거리만 줄은 듯한 느낌이..;;

// 윗글을 얻음
$sql = " SELECT wr_id, wr_subject, wr_datetime FROM ".$write_table." WHERE wr_is_comment = 0 AND wr_id = wr_parent AND wr_reply = '' AND wr_id > ".$wr_id." ".$sql_search." ORDER BY wr_id ASC LIMIT 1 ";


// 아래글을 얻음
$sql = " SELECT wr_id, wr_subject, wr_datetime FROM ".$write_table." WHERE wr_is_comment = 0 AND wr_id = wr_parent AND wr_reply = '' AND wr_id < ".$wr_id." ".$sql_search." ORDER BY wr_id DESC LIMIT 1 ";


이렇게 입력되어 있습니다!
왕계란
6년 전
http://exam.dothome.co.kr/bbs/board.php?bo_table=free
여기서 테스트 해 보세요.
제가 생각하는 거랑 좀 다른 것일 수도 있어서요.
소울e
6년 전
테스트해봤는데 보니까 분류 보기 상태에서는 잘 되는 것 같은데

전체게시글 상태에서 앞뒤로 움직이니 게시글을 마구 건너뛰는 것 같습니다,

균이님 소스로 해결이 되었습니다,

계란님이 몇번이나 도움주신것도 정말로 감사드려요!!

위에 전체 소스 올려놓았는데 혹시 소스에 문제가 있다면 그때도 간단한 조언 부탁드릴게요!!

댓글을 작성하려면 로그인이 필요합니다.

s
sinbi Expert
6년 전

윗글을 얻음에도 넣어주세요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

소울e
6년 전
아래글 얻기와 똑같이 넣어봤는데 이전글로 돌아가면 답글이 그대로 나옵니다 ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인