정규식 질문 - 현재 페이지 이전의 몇개만 불러오려면 어떻게 해야 하지요?
본문
읽어 주셔서 감사합니다.
게시물을 읽을 때, 그 아래쪽에 "그 게시판의 최근게시물" 스킨을 달았습니다.
리스트를 불러올 때 보통은 아래와 같이 하지요?
for ($i=0; $i<count($list); $i++) {
그런데 이렇게 하면 최종 게시물을 기준으로 리스트가 표시됩니다.
저는 현재 게시물 이전의 10개만 불러 오고 싶거든요.
예를들자면 총 게시물이 100개라도, 현재 읽고 있는 게시물이 wr_id=90 이라면 90~80번 게시물 제목만 뽑아 오고 싶습니다.
그렇게 한다면 위의 정규식을 어떻게 고치면 좋을까요?
그리고 위와 같이 하려면 현재의 게시물 번호도 알아야 할 거 같은데 "wr_id=번호" 이 부분의 번호를 변수에 넣으려면 정규식을 어떻게 작성해야 하는지요?
좋은 하루 되시길 바랍니다.
답변 2
"그 게시판의 최근게시물"스킨 << 이게 관리자 게시판 설정에서 전체목록보이기 이거 맞죠??
뷰페이지아래에 리스트 나오는 것이 뷰페이지만 적용되는 소스가 따로 있는게 아니라 list.php를 인클루드 해오는거에요.
배열 $list변수에 들어가는 값의 쿼리문이 select * from {$write_table where wr_is_comment=0 ... {$sql_order} limit {$from_recode, $page_rows 이렇게 되어 있어요. 중간에 ...은 공지사항이 있을시 공지사항을 속아내는 쿼리 중간에 있는것이고요.
이 쿼리문이
$sql = " select * from {$write_table} where wr_is_comment = 0 ";
if(!empty($notice_array))
$sql .= " and wr_id not in (".implode(', ', $notice_array).") ";
$sql .= " {$sql_order} limit {$from_record}, $page_rows ";
이렇게 완성되는데요. 2~3번째줄이 공지사항이에요. 그러니 저건 신경쓰지마시고 첫번째줄 다음에 조건문을 넣으시면되요.
if($wr_id){
$sql .= " and wr_id <= ".$wr_id;
}
wr_id값이 있다면 sql변수에 wr_id가 현재 wr_id보다 작거나 같은 것들을 추가조건으로 다는거에요.
이렇게하면 뷰페이지 리스트 맨위에 현재 보는글과 다음으로는 현재 글보다 이전에 등록된 글들이 표시되요.
select * from {$write_table} where wr_id < {$wr_id} wr_is_comment= 0 order by wr_id desc limit 10
그리고 정규식이 아니라 SQL Query라고 합니다.