지구인

그 게시글의 가장 최근 댓글 시간 뽑아내기

· 2006-11-07 (화) 14:13:57 · 3641 · 6
요즘 포럼용 게시판을 만들면서 알아낸 팁입니다.

본글이든 댓글이든 가장 최근에 달린 순서대로 목록출력되는 기능은 이미 그누보드에 있습니다.
(모르시는 분을 위해 알려드리면 게시판관리설정에서 '리스트 정렬 필드 → wr_last desc : 최근글 최근것 부터')

그런데 이렇게 해도 목록에 나오는 글쓴시간은 여전히 최초 원글의 작성시간이죠. (아닌가? -_-;;)

이걸 댓글이든 원글이든 가장 최근 작성시간을 뽑아내는 팁입니다.
역시 이미 그누보드 자체에 있었습니다. 아주 간단하더군요.

<?=$list[$i][last]?>
<?=$list[$i][last2]?>
<?=$list[$i][wr_last]?>

세개 다 쓸 수 있습니다. 각각 아래처럼 나옵니다.

2006-11-07
11:50 (오늘이면 시간, 오늘 지나면 날짜)
2006-11-07 11:50:32


*******************

참고로 날짜 출력하는 방식을 좀 더 바꾸고 싶으면 lib/common.lib.php를 손봅니다.
아래와 같은 소스가 작성시간에 관계된 대목입니다. (바로 위는 댓글관련)

// 당일인 경우 시간으로 표시함
$list['datetime'] = substr($list['wr_datetime'],0,10);
$list['datetime2'] = $list['wr_datetime'];
if ($list['datetime'] == $g4['time_ymd'])
$list['datetime2'] = substr($list['datetime2'],11,5);
else
$list['datetime2'] = substr($list['datetime2'],5,5);
// 4.1
$list['last'] = substr($list['wr_last'],0,10);
$list['last1'] = substr($list['wr_last'],0,16); ////제가 추가한 소스입니다.
$list['last2'] = $list['wr_last'];
if ($list['last'] == $g4['time_ymd'])
$list['last2'] = substr($list['last2'],11,5);
else
$list['last2'] = substr($list['last2'],5,5);


전 여기에

$list['last1'] = substr($list['wr_last'],0,16);

이걸 추가해서 '2006-11-07 11:50' 이런 식으로 뽑아냈습니다. (<?=$list[$i][last1]?>)


*********************

내친 김에 더 알려드립니다. (초보분들만 보삼~~)

원래 시간을 뽑게 되면 '2006-11-07 11:50:32' 이런 식이 풀옵션(?)입니다. 즉 '년-월-일 시:분:초'
그누보드에서는 $wr_datetime 혹은 $wr_last가 그 변수네요.
여기서 필요한 글자만 잘라내는 소스가

substr(); // 이거거든요.


가령 '2006-11-07 11:50:32'에서 '년-월-일'만 쓰고 싶다면 맨앞(0번)에서 10자리까지만 뽑으면 되겠죠? (단 하이픈(-)도 문자 하나로 칩니다)
그 명령어가 아래입니다.

$list['datetime'] = substr($list['wr_datetime'],0,10); //// 0은 번호, 10은 자릿수
$list['last'] = substr($list['wr_last'],0,10);


첫번째 소스를 해석하면 $list['wr_datetime']의 첫번재 문자(2)부터 10자리를 끊어서 $list['datetime']라고 한다..입니다. (프로그램어는 보통 시작을 1이 아니라 0으로 하더군요)


그리고 '2006-11-07 11:50:32'에서 날짜는 놔두고 '시:분(11:50)'만 뽑고 싶다면 '년-월-일(공백) '이 차지하는 11자리(번호상으론 0부터 10까지)를 건너뛰고 11번 문자(1)부터 5자리를 끊으면 되겠죠. (공백도 문자 하나)

$list['datetime2'] = substr($list['wr_datetime'],11,5); //// 11은 번호, 5은 자릿수
$list['last2'] = substr($list['wr_last'],11,5);


제가 추가한 $list['last1']는 '년-월-일 시:분'까지 뽑아내는 겁니다.

$list['last1'] = substr($list['wr_last'],0,16);


참고로 substr(); 는 숫자말고도 일반 문자를 자를 때도 씁니다.
저도 이제 php를 한참 배우는 입장이지만 초보의 입장에서 주제넘은 강의를 해봤습니다^^;
|

댓글 6개

그건 그렇고 목록에서 그 게시글의 가장 최근 댓글 작성자는 어떻게 뽑아내면 될까요? ㅜㅜ
2006-11-08 (수) 01:11:38
전 여기에

$list['last1'] = substr($list['wr_last'],0,16);

$list['name1'] = substr($list['wr_name']);


출력부는 적당히 가공

$list[$][wr_1] = $list[name1]; 정도로 하면 안나올까요?....
감사합니다^^
근데 해보니까 엉뚱한 곳에서 에러가 나더군요-_-;;
일단 복원하고 낼 다시 해봐야겠습니다.^^;
2006-11-08 (수) 19:13:30
죄송합니다...해당 글에 제일나중에 작성된 글의 작성자를 넣는 필드가 없으므로 목록에서 별도로 쿼리를 하셔야 할듯 합니다....ㅠ.ㅠ
안 그래도 그렇게 해야겠다고 생각했습니다^^;;

근데 제가 쿼리 뽑는 걸 아직 마스터하질 못해서 그런데 대략 알 수 없을까요? ㅜㅜ
물론 저도 나름대로 알아보겠습니다만....;;;
포럼. 좋아요 ^^
댓글을 작성하시려면 로그인이 필요합니다.

그누4 팁자료실

3,309건

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요. 나누면 즐거움이 커집니다.

+
제목 글쓴이 날짜 조회
06-11-14 조회 3,257
06-11-13 조회 6,549
06-11-13 조회 3,549
06-11-11 조회 3,971
06-11-11 조회 3,182
06-11-10 조회 3,173
06-11-09 조회 5,901
06-11-09 조회 3,113
06-11-08 조회 3,983
06-11-07 조회 3,642
06-11-06 조회 1.1만
06-11-06 조회 3,027
06-11-05 조회 3,420
06-11-04 조회 8,956
06-11-03 조회 7,993
06-11-03 조회 5,718
06-11-03 조회 4,981
06-11-01 조회 8,609
06-10-29 조회 6,554
06-10-29 조회 4,269