게시판 여분필드 체크 시 최신 고정

게시판 여분필드 체크 시 최신 고정

QA

게시판 여분필드 체크 시 최신 고정

본문

안녕하세요

본 글 제목과 동일한 제목으로 이전에 글을 올렸습니다.

 

https://sir.kr/qa/483405?&vpage=1#answer_483501

 

위 글을 통해 이전 문제는 해결 했고 추가 질문이 있어서 다시 한번 글 남깁니다.

 

/bbs/list.php 파일에서,


if(!$sst)
    $sst  = "wr_num, wr_reply";
===>수정
if(!$sst){
   if($bo_table=='해당게시판ID')  $sst  = "wr_1 desc, wr_num, wr_reply"; 
   else $sst  = "wr_num, wr_reply";
}

 

위와 같이 수정하니 맨 앞으로 고정은 되는데,

 

1순위 : wr_1 체크 한 게시물

2순위 : 날짜

 

이렇게 정렬이 되는 것 같습니다.

wr_1이 중복으로 체크가 되었을 경우 나중에 등록된 게시물이 위로 올라오고 있는 상태입니다.

wr_1이 체크된 게시물이 여러개일 경우 나중에 체크한 게시물이 더 최신으로 오게 하는 방법이 있을까요?

 

해결에 더 필요한 정보가 있다면 말씀해주세요

 

감사합니다.

 

이 질문에 댓글 쓰기 :

답변 4

나중에 체크한 글이 먼저 나오게 하려면,

나중에 체크한 글의 wr_1 에 이전보다 더 높은 값을 저장해야 됩니다.

 

ex.

첫번째 '공지' 체크 : wr_1 값에 '1' 저장

두번째 '공지' 체크 : wr_1 값에 '2' 저장

세번째 '공지' 체크 : wr_1 값에 '3' 저장

=> order by wr_1 desc 에 의해, 세번째/두번째/첫번째 글 순으로 나옴.

 

그래서 이 방법을 사용하는 경우..

이전에 wr_1 값중 가장 높은 값을 찾은 후 +1 을 하여 저장하는 방법이 있습니다.

 

또는..

 

wr_1 에 현재시각 정보를 저장하는 방법이 있습니다. 나중에 체크한 것에 높은 값이 들어감

 

첫번째 '공지' 체크 : wr_1 값에 '20221217183005' 저장 (22년 12월 17일 18시 30분 5초)

두번째 '공지' 체크 : wr_1 값에 '20221218184005' 저장 (22년 12월 18일 18시 40분 5초)

세번째 '공지' 체크 : wr_1 값에 '20221217185005' 저장

 

* write_update.head.skin.php

if ($w == '' && $wr_1)

  $wr_1 = date('YmdHis');

기본 순서는 desc 와 asc 가 있습니다.

질문자님은 나중에 체크한 게시물이 더 최신으로 오게  하고싶으신거자나요

그러면 나중에 체크한게 몬지를 구분해야됩니다.

기본 보드라면 wr_last가 최신 저장 시간입니다.

댓글이나 수정이 들어가면 wr_last가 변경되기 때문에

wr_2 를 미사용중이시라면 wr_1을 체크하실때 wr_2에는 저장시간을 넣어주시는 소스를 추가하시고

wr_1 desc, wr_2 desc (늦게 누를수록 최신시간이 저장되겠죠?) 를 넣어주시면 될거 같네요

write.skin.php 파일에 wr_1을 체크 하는 부분이


if ($is_admin) {
				$main_checked = ($write['wr_1']) ? ' checked' : '';
				$option .= "\n".'<label class="checkbox-inline"><input type="checkbox" id="wr_1" name="wr_1" value="1" '.$main_checked.'> 메인글</label>';
				$option_ctn++;
			}


이렇게 되어있는데 추가 설명 가능할까요?ㅠ

관리자라면
wr_1 에 데이터가 있으면 옵션 체크되어라
wr_1은 관리자만 보인다
$option_ctn 의 갯수 증가를 하나 증가해라

결국 관리자라면 옵션 선택에 wr_1 체크 기능을 노출하라는 것이거든요
관리자가 아니라면 wr_1 체크기능이 미노출되는 것이지요,

이거에 단점은 관리자 말고 다른이의 글작성 시 관리자가 이글 수정 시 체크를 한 후
본래 글쓴이가 수정하게 되면 wr_1값이 없기에 wr_1 값이 사라질 수 있습니다.
관리자가 글작성시에만 wr_1이 활성화 된다고 보시면 될듯합니다.

제 위 댓글에 더 설명을 붙이자면
관리자라면 노출 체크시간이 들어가야됩니다.
wr_2 항목을 사용 안하실때 예를 들어봅니다.
if($is_admin){
    echo '<input type="text" name="wr_2" id="wr_2" value="'.$write[wr_2].'" >  ';
} else {
    echo '<input type="hidden" name="wr_2" id="wr_2" value="'.$write[wr_2].'" >';
}

관리자일떄 wr_2 에 값을 넣고
관리자가 아니라면 wr_2 값은 히든으로 안보이게 한다
위 내용은 예제로 넣어봤고요, 참고해서 응용해보세요

추가로 wr_2에 datepicker 기능 넣으시면 달력 선택 기능이 추가되실꺼에요

방법은 여러가지일텐데 제가 생각한 방법 남겨봅니다.

마르스컴퍼니 님의 글도 하나의 좋은 방법이네요
글 작성시나 수정시에 wr_1 에 값이 들어가있으면
저장할때 wr_1값을 지금 시간으로 저장하라

제가 볼때 단점은... 기존에 등록된 체크글의 글 상세내용만 수정 했는데
저장하시게 되면 wr_1이 최신일자로 업데이트 되기에
기존의 순서가 바뀌게 되는 부분이 발생될 수 있습니다.

크게 수정할게 없으시다면 ,,, 수정하는데 순서를 맨앞으로 보내도 된다 하시면
위방법도 아주 좋은 방법입니다.

나중에 체크한다는말은 수정할때 체크한다는거잖아요?
그러면 수정할때 write_update.skin.php 생성해서 wr_datetime를 G5_TIME_YMDHIS현시점으로 업데이트해버리면됩니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 766
QA 내용 검색

회원로그인

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