게시판 테이블은 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;}
}
}
// <---일반글
?>
<!-- 공지사항과 아닌 것의 분리를 위한 코드 -->
댓글 2개
게시글 목록
| 번호 | 제목 |
|---|---|
| 24318 | |
| 24317 | |
| 24315 | |
| 24309 | |
| 24294 | |
| 24293 | |
| 24277 | |
| 24262 | |
| 24260 | |
| 24253 | |
| 24251 | |
| 24236 | |
| 24233 | |
| 24228 | |
| 24226 | |
| 24221 | |
| 24214 | |
| 24203 | |
| 24201 | |
| 24199 | |
| 24196 | |
| 24195 | |
| 24194 | |
| 24192 | |
| 24191 | |
| 24187 | |
| 24185 | |
| 24183 | |
| 24172 | |
| 24168 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기