[소스 질문] 지난 1달을 지난 1주일로 바꾸는 방법이 궁금해요.. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

[소스 질문] 지난 1달을 지난 1주일로 바꾸는 방법이 궁금해요.. 정보

[소스 질문] 지난 1달을 지난 1주일로 바꾸는 방법이 궁금해요..

본문

균이님과 스타루비님의 아주 크신 도움으로 출력하는 부분까지 해결을 했습니다.
두분께 너무나 감사드립니다..^^
원본은 아래 링크입니다.
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=10588

지난 1달 게시물,코멘트,방문 순위 구현후 지난 1주 등으로 바꿀때..이게 현재의 목적입니다 ^^

근데 한숟가락 먹고나니 밥을 다 비우고 싶다는 욕구가 막 생기네요..ㅎㅎ
소스상에서는 지난 1달과 10레벨 미만으로 출력되도록 되어 있습니다.
해당 부분은 아래와 같습니다.
========================================================================
    global $g4;
    global $g_id;
   
    $year = date("Y");
$month = date("m");
$day = date("d");

$tmp = mktime(0, 0, 0, $month - 1 , $day, $year, 0);
$lastmonth = date("Y-m",$tmp);

    if ($skin_dir)
        $skin_path = "$g4[path]/skin/top10/$skin_dir";
    else
        $skin_path = "$g4[path]/skin/top10/rank5";

    $Writelist = array();
    $Commentlist = array();
    $Visitlist = array();

//글쓰기 랭킹
$sql_common = " from  $g4[board_new_table] a, $g4[member_table] b "; //where mb_level < 10 ";
$sql_common = $sql_common . " where a.bn_datetime like '" . $lastmonth . "%' ";
$sql_common = $sql_common . " and a.mb_id <> ''";
$sql_common = $sql_common . " and a.wr_id = a.wr_parent ";
$sql_common = $sql_common . " and a.mb_id = b.mb_id ";
$sql_common = $sql_common . " and b.mb_level < 10 ";
$sql_order = " order by cnt desc ";


$sql = " SELECT b.mb_nick,count(*) cnt
          $sql_common
          group by b.mb_nick
          $sql_order
          limit 0,$rows";

    $result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++)
{

    $Writelist[$i][mb_nick] = conv_subject($row[mb_nick], $subject_len, "..");
    $Writelist[$i][mb_cnt] = $row[cnt];
}
============================================================================

이 소스에서

$sql_common = $sql_common . " and b.mb_level < 10 ";  부분을
$sql_common = $sql_common . " and b.mb_level < 3 ";  이런 식으로 바구면 3레벨 미만이 출력되는 것이 맞겠지요?

그리고 다음이 제가 해결하지 못하는 부분입니다.

    $year = date("Y");
$month = date("m");
$day = date("d");

$tmp = mktime(0, 0, 0, $month - 1 , $day, $year, 0);
$lastmonth = date("Y-m",$tmp);

이 부분이 지난 1달을 설명해주는 함수 같은데요..
어떤 식으로 바꿔야지 지난 1달이 아닌 지난 1주일이나 지난 15일 이런 식으로 출력이 가능할까요?
혹시나 싶어서 단순하게
$tmp = mktime(0, 0, 0, $month - 1 , $day, $year, 0);  부분을
$tmp = mktime(0, 0, 0, $month, $day - 7 , $year, 0); 이렇게 바꿔보았더니
출력이 되긴 하는데 지난 7일로 출력이 되진 않더라구요..
혹시 제가 안바꾸고 빼먹은 부분이 있는지.. 아니면 또다른 함수를 추가해야 하는지..
구문에 잼뱅이인 저는 도저히 모르겠네요..

고수님들의 도움을 부탁드립니다..
이번 주말 안에 해결을 해야 다음주부터 이벤트를 시행할 수 있는데
머리가 무식해서 손발만 고생하고 답을 못구하고 있습니다 ㅎㅎ
도움을 부탁드립니다 ^^

댓글 전체

지금 다시 생각해보니 $tmp = mktime(0, 0, 0, $month, $day - 7 , $year, 0); 의 의미는 지난 1주일이 아니라 7일전이 아닐까 싶네요.. 맞나요?

갑자기 머리가 복잡해지는게....ㅡ,ㅡㅋ
그럼 지난 1주일을 계산하려면 스타트타임 엔트타임..이런 식인가요?
구문을 모르니 더 답답해집니다...ㅋ
mktime보다는 strtotime 함수가 더 직관적입니다.

echo strtotime('previous Monday'); // 이전 월요일
echo strtotime('next Thursday'); // 다음 목요일
echo strtotime('-10 day'); // 10일전
echo strtotime('-1 month', strtotime('previous Sunday')); // 지난 일요일의 한달전

래퍼런스 : http://kr2.php.net/manual/kr/function.strtotime.php
청춘불안정님 답변 감사드립니다..^^
제가 잘 몰라서 그러는데요..
strtotime 함수는 특정일 또는 특정 달을 뽑아내는건가요?
지난주 1주일을 뽑아서 그 기간동안의 순위를 냈으면 하는건데요..
그렇게 하려면 어떤 식으로 뽑아야 하는지를 잘 몰라서요..
$sunday = strtotime('-2 sunday');
$saturday = strtotime('+6 day', $sunday);
echo '지난주 : ' . date('Y-m-d', $sunday) . ' ~ ' . date('Y-m-d', $saturday);

$month = strtotime('-1 month');
echo '지난달 : ' . date('Y-m-1', $month) . ' ~ ' . date('Y-m-t', $month);
답변 감사드립니다 ^^
strtotime의 쓰임새가 이런 것이었군요..
이제 조금 이해가 되었습니다.
그럼 date("y-m-d",strtotime(....)) 이런 방법으로 넣어도 되겠네요..

 date('Y-m-d', $sunday)  date('Y-m-d', $sunday) 을 between 으로 쿼리를 보내줘도 되겠네요..

조금 더 공부해서 잘 적용해봐야겠습니다.
오늘 또 새로운 함수를 배울 수 있어 너무 좋았습니다.
감사합니다 ^^
전체 66 |RSS
그누4 질문답변 내용 검색

회원로그인

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