게시판 상세보기에서 공지사항과 일반글 분리해서 이전글 다음글 출력하기 > 그누보드5 팁자료실

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!

그누보드5 팁자료실

게시판 상세보기에서 공지사항과 일반글 분리해서 이전글 다음글 출력하기 정보

게시판 상세보기에서 공지사항과 일반글 분리해서 이전글 다음글 출력하기

첨부파일

divide_notice.php (9.2K) 11회 다운로드 2019-10-31 11:28:45

본문

 

 

게시판 테이블은 news라는 조건으로 했습니다 코드 내에 자세한 주석 달아놓았습니다

다음은 코드입니다/*첨부파일에도 php 파일로 올려놓고 해당 작업사이트는 링크 1번에 올려놓겠습니다


 

<!-- 공지사항과 아닌 것의 분리를 위한 코드 -->

                                    <?php

                                    $notice=false;

                                    $sql_v='SELECT `bo_notice` FROM `g5_board` WHERE `bo_table`="news"';

                                    $result_v = sql_query($sql_v);

                                    $row_v = sql_fetch_array($result_v);

                                    $strTok =explode(',' ,$row_v['bo_notice']);

                                    $cnt = count($strTok);

                                    // <---공지사항

                                    //공지사항이 가장 최근 것 확인

                                    if($strTok[0]==$view['wr_id']){$prev_href_n=false;}else{$prev_href_n=true;}

                                    //공지사항이 가장 오래된 것 확인

                                    if($strTok[$cnt-1]==$view['wr_id']){$next_href_n=false;}else{$next_href_n=true;}

                                    //공지인것을 확인하고 최신글의 앞뒤 id 값을 불러온다

                                        //쿼리문 준비

                                        $sql_l="SELECT `wr_id` FROM `g5_write_news` WHERE ";

                                        for($i = 0 ; $i < $cnt ; $i++){

                                            if($strTok[$i]==$view['wr_id']){

                                                $notice=true;

                                            $prve=$strTok[$i-1];

                                            $next=$strTok[$i+1];

                                            }

                                        //공지가 가장 오래된 것일 때에 next는 공지가 아닌 것 중에 가장 최신 글 이여야 한다.

                                        //공지인것들을 제외한 가장 최신글

                                        ////공지사항 아닌것들 추가 ////마지막일때 and 빼줌

                                        if($i==$cnt-1){$wr_id_not='`wr_id` != '.$strTok[$i];}else{ $wr_id_not='`wr_id` != '.$strTok[$i].' and ';}

                                        $sql_l=$sql_l.$wr_id_not;

                                        }

                                        $sql_l= $sql_l." ORDER BY `wr_datetime` DESC limit 1";

                                        $result_l = sql_query($sql_l);

                                        $row_l = sql_fetch_array($result_l);

                                        //공지가 가장 오래된 것일 때에 next는 공지가 아닌 것 중에 가장 최신 글 이여야 한다.

                                        if($next_href_n==false){

                                            $next=$row_l['wr_id'];

                                        //공지사항의 가장 늦게된 글이 첫번째가 아니면 next 버튼이 생겨야함 

                                        $next_href_n=true;

                                        }

                                    // <---공지사항

                                    

                                    // <---일반글

                                    if($notice==false){

                                        // PREV

                                        //$cnt 는 fasle일경우 1을 반환하므로 $cnt 값이 1일때와 같아서 절대적이 기준을 만들수가 없다

                                        //그래서 false 일경우에 false와 true값을 만들 수 있는 cnt2를 생성 -> 일반 pref/next를 사용할 기준을 $row_v['bo_notice'] 이 녀석으로 해야함

                                        //1.공지사항이 없으면 최신 일반글일 때에 PREV가 없어야함 //2.공지사항이 있으면 최신 일반글이더라도 PREV가 있어야함

                                        if($prev_href){$prev_href_g=true; if($cnt==0){$prev_href_g=false;}}else{$prev_href_g=false;if($cnt){$prev_href_g=true;}}

                                        //next같은 경우에는 최신글이라서 next가 무조건 생기는데 최신글들의 밑에 있던 것들이 공지사항으로 올라가도 자신이 가장 위에 있는 줄 알고 next를 생성한다

                                        // 최신글이더라도 가장 밑에 출력 되는 거면 next 버튼이 안나와야함 //공지사항은 아니여야하고 date순은 가장 늦은거여야함

                                        $sql_n="SELECT `wr_id` FROM `g5_write_news` WHERE ";

                                        for($i = 0 ; $i < $cnt ; $i++){

                                            if($strTok[$i]==$view['wr_id']){

                                                $notice=true;

                                            $prve=$strTok[$i-1];

                                            $next=$strTok[$i+1];

                                            }

                                        if($i==$cnt-1){$wr_id_not='`wr_id` != '.$strTok[$i];}else{ $wr_id_not='`wr_id` != '.$strTok[$i].' and ';}

                                        $sql_n=$sql_n.$wr_id_not;

                                        }

                                        $sql_n= $sql_n." ORDER BY `wr_datetime` ASC limit 1";

                                        $result_n = sql_query($sql_n);

                                        $row_n = sql_fetch_array($result_n);

                                        // 해당조건에 만족하는값

                                        echo $row_n['wr_id']; 

                                        echo $view['wr_id']; 

                                        if($next_href){$next_href_g=true; if($view['wr_id']==$row_n['wr_id']){$next_href_g=false;}}else{$next_href_g=false;}

                                        if(!$row_v['bo_notice']){  if($prev_href){$prev_href_g=true;}else{$prev_href_g=false;}}else{ if($prev_href){$prev_href_g=true;} }

                                        // 가장 최신글일경우 마지막 공지사항으로 넘어감

                                        if($row_l['wr_id']==$view['wr_id']){ $prve=$strTok[$cnt-1]; }else{

                                            //1.가장 최신의 일반글이 아닌경우

                                            //2.글이 삭제 되어 id값이 +1을 해도 없는경우

                                            //3. 값이 공지사항일 경우 다음글로 넘어가야함

                                            $prve=$view['wr_id'];

                                            $re=1;

                                            while($re==1){

                                                $again='1';

                                                if($prve==9999){$re=0;}                                             

                                                $prve=$prve+1;                                                      

                                                $sql_g="SELECT `wr_id` FROM `g5_write_news` WHERE `wr_id`=".$prve; 

                                                $result_g = sql_query($sql_g);                                    

                                                $row_g = sql_fetch_array($result_g);

                                                if(!$row_g['wr_id']){continue;}

                                                for($i=0;$i<$cnt;$i++){

 

                                                    if($strTok[$i]==$prve){$again='2';}

                                                }

                                                if($again=='2'){continue;}else{$again=='1';}

                                                if($again=='1'){$re=0;}

                                            }

                                        }

                                        //NEXT

                                        //PREV와 원리같음

                                         $next=$view['wr_id'];

                                         $re=1;

                                         while($re==1){

                                            $again='1';

                                            if($next==0){$re=0;}                                             

                                            $next=$next-1;                                                      

                                            $sql_g="SELECT `wr_id` FROM `g5_write_news` WHERE `wr_id`=".$next; 

                                            $result_g = sql_query($sql_g);                                    

                                            $row_g = sql_fetch_array($result_g);

                                            if(!$row_g['wr_id']){continue;}

                                            for($i=0;$i<$cnt;$i++){

                                                if($strTok[$i]==$next){$again='2';}

                                            }

                                            if($again=='2'){continue;}else{$again=='1';}

                                            if($again=='1'){$re=0;}

                                        }

                                    }

                                     // <---일반글

                                    ?>

                                    <!-- 공지사항과 아닌 것의 분리를 위한 코드 -->







 

추천
1

댓글 2개

전체 2 |RSS
그누보드5 팁자료실 내용 검색
  • 개별 목록 구성 번호 제목 작성자 작성일 추천 조회
  • 게시물이 없습니다.

회원로그인

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