RadarURL

조회 수 5781 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!    주의하실  점    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
아래 방법은 member_table을 건드리지 않고 음력 생일자를 표시하기 위해서
제로보드의 원본에 있는 open_birth를 음력표시라고 가정하고 작성된 것입니다.
만일... 음력 생일자를 구분하는 기준자로 luday 등을 사용하시고자 하는 분은
member_table의 내용 등 아래 내용 이외에 몇 가지 추가적인 작업이 필요합니다.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


며칠 전에 글을 올렸다가 잘못된 부분이 있어서 삭제를 하고 다시 올립니다^^

전 PHP에 대해서는 잘 모르는데... 음력생일자의 생일을 처리하기 위해서 여러 글을 찾아보다가 redsuns님과 네로님 등이 여기 게시판에 생일자와 관련하여 올려주신 글을 보고서 해법을 찾았기에 여러분들과 공유합니다.

PHP나 Mysql 등에 대해서 잘 모르기 때문에 서버에 얼마나 무리를 주는 방식인지는 고려되지 않았다는 점을 이해해 주세요^^

그리고.... 아래 방식에서의 단점은 월별 생일자 전체를 날짜별로 소트하지 못하고, 음력생일자끼리의 소트와 양력생일자끼리의 소트로 나뉘어 있다는 점입니다. (PHP를 조금 더 알면 이걸 해결할 수 있을 것도 같은데^^)

암튼... 제가 사용한 방법은 우선 회원들의 음력생일을 받기 위해서 member_join.php와 member_modify.php 파일에 있는 "공개" 옵션을 "음력" 옵션으로 전환해서 사용했습니다. (이 과정에서 원본에서는 선택적으로 사용할 수 있었던 공개여부를 전부 공개되도록 했습니다. 아래 내용을 보시면 압니다^^)

먼저 member_join.php 파일을 열어서 아래와 같은 부분을 찾으세요.

<input type=checkbox value=1 checked name=open_birth> 공개

위와 같은 부분을 전 아래와 같이 수정했습니다. (음력 생일을 받기 위해서...)

<input type=hidden value=0 name=open_birth><input type=checkbox value=1 name=open_birth>음력


참.... 위에 보시면 name=open_birth 라는 부분이 있는데... 원래는 생일의 공개여부를 체크하는 내용이었지만, 그냥 그대로 사용하면서 생일의 음력여부를 체크하는 것으로 사용하고자 했습니다. (원본을 최대한 건드리지 않기 위해서^^) 따라서 제가 쓰고 있는 글에서 open_birth라는 것은 생일의 공개여부가 아니라 음력을 나타낸다는 점을 꼭 기억하셔야 합니다.



그리고... member_modify.php 파일을 열어서 아래와 같은 부분을 찾으세요.

<? if($group_data[use_birth]) { ?>
  <tr height=28 align=right>
     <td style=font-family:Tahoma;font-size:8pt;><b>Birthday </td>
     <td align=left> <input type=text name=birth_1 size=4 maxlength=4 value="<?=date("Y",$member[birth])?>" style=border-color:#d8b3b3 class=input> 년
                     <input type=text name=birth_2 size=2 maxlength=2 value="<?=date("m",$member[birth])?>" style=border-color:#d8b3b3 class=input> 월
                     <input type=text name=birth_3 size=2 maxlength=2 value="<?=date("d",$member[birth])?>" style=border-color:#d8b3b3 class=input> 일
          <input type=checkbox value=1 name=open_birth <?=$check[$member[open_birth]]?>> 공개
  </tr>        <tr>
          <td colspan="5" bgcolor="#EBD9D9" align="center"><img src="images/t.gif" width="10" height="1"></td>
        </tr>
<? } ?>

위와 같은 부분을 찾으셨으면... <? if($group_data[use_birth]) { ?>와  <? } ?>를 삭제합니다. (모두 공개되도록...) 그리고....

<input type=checkbox value=1 name=open_birth <?=$check[$member[open_birth]]?>> 공개

위와 같은 부분을 아래와 같이 수정합니다.

<input type=hidden value=0 name=open_birth><input type=checkbox value=1 name=open_birth <?=$check[$member[open_birth]]?>>음력

이렇게 해서 회원들이 가입하거나 회원정보를 수정할 때 음력생일을 처리할 수 있도록 했습니다.


이제 아래와 같은 내용으로 birth.php 파일을 만들고 첨부된 파일을 풀어서 얻은 luncal.inc 두 개의 파일을 계정에 올린 후 사용하시면 됩니다.

제가 사용한 음력/양력 생일자를 위한 월별 생일자 표시 방법은.... 아래 하나하나 설명을 하도록 하겠습니다^^ (혹시 제 설명 중 틀리는 부분이 있으면 고수님들께서 지적해 주세요. 위에서 말했지만... 제가 원래 PHP는 모르는 사람이거든요^^)


<?
$디비호스트 = "  ";
$디비아이디 = "  ";
$디비비밀번호 = "  ";
$디비네임 = "  ";
$제로보드경로 = ".";
$conn=mysql_connect($디비호스트,$디비아이디,$디비비밀번호);
mysql_select_db($디비네임, $conn);
// 위의 내용은 개인환경에 맞게 입력하시고...


include ("luncal.inc");
// 첨부된 압축파일의 php 파일을 인클루드합니다.

$now_month = date("n");
$now_day   = date("n월 d일");

$now_year  = date("Y");
$now_month = date("n");
$now_day   = date("d");

$sol2lun_day   = sol2lun($now_year,$now_month,$now_day);  // 오늘 날짜가 음력으로 며칠인지 계산합니다

$sol2lun_day   = date("$sol2lun_day[1].$sol2lun_day[2]"); // 위에서 계산된 오늘의 음력 날짜...
$sol2lun_month = date("$sol2lun_day[1]"); // 위에서 오늘 날짜를 음력으로 전환했을 때, 오늘은 음력 몇 월인지...
$sol2lun_month_1 = date("$sol2lun_day[1]")-1; // 위의 결과보다 음력으로 한 달 전...
$sol2lun_month_2 = date("$sol2lun_day[1]")+1; // 위의 결과보다 음력으로 한 달 후...


$result=mysql_query("select user_id, name, no, birth, open_birth from zetyx_member_table where (from_unixtime(birth,'%c')='$now_month' and open_birth='0') or (from_unixtime(birth,'%c')='$sol2lun_month' and open_birth='1') or (from_unixtime(birth,'%c')='$sol2lun_month_1' and open_birth='1') or (from_unixtime(birth,'%c')='$sol2lun_month_2' and open_birth='1') order by from_unixtime(birth,'%c.%d') asc", $conn);

// 이 부분이 가장 중요한 부분 중 하나입니다. 음력 생일자를 추출해 오는 과정이니까요.

// from_unixtime(birth,'%c')='$now_month' and open_birth='0'
// 우선 양력생일을 사용하는 회원 중 이달에 생일이 있는 회원의 정보를 가져옵니다.

// 이번달 양력 5월은 음력 3월 19일부터 4월 20일까지가 포함된다는 사실을 먼저 기억하시구요...

// from_unixtime(birth,'%c')='$sol2lun_month_1' and open_birth='1'
// 음력생일자의 생월이 오늘날짜를 음력으로 전환해서 얻은 음력월보다 한 달 이전인 회원의 정보를 가져옵니다.

// from_unixtime(birth,'%c')='$sol2lun_month' and open_birth='1'
// 음력생일자의 생월이 오늘날짜를 음력으로 전환해서 얻은 음력월과 같은 회원의 정보를 가져옵니다.

// from_unixtime(birth,'%c')='$sol2lun_month_2' and open_birth='1'
// 음력생일자의 생월이 오늘날짜를 음력으로 전환해서 얻은 음력월보다 한 달 이후인 회원의 정보를 가져옵니다.

// 위와 같이 세 달의 정보를 가져오는 것은.... 오늘의 음력날짜가 음력 3월일 경우(그러니까 양력으로 5월 초순) $sol2lun_month와 함께 음력 4월인 $sol2lun_month_2의 정보도 필요하며... 오늘의 날짜가 음력 4월일 경우(그러니까 양력으로 5월 하순) $sol2lun_month와 함께 음력 3월을 규정하는 $sol2lun_month_1의 정보도 필요하기 때문입니다.

// 천천히 생각해 보시면 아시겠지만... 위와 같이 해야 별다른 문제가 없을 것 같습니다^^

$total=mysql_num_rows($result);

if ($total)        {
for ($i=1; $i<=$total; $i++)         {
$frev=mysql_fetch_array($result);
$data[user_id]=$frev["user_id"];
$data[name]=$frev["name"];
$data[no]=$frev["no"];
$data[birth]=date("n월 d일", $frev[birth]);
$data[birth_]=date("n.d", $frev[birth]);  // 개인적으로 보다 나은 생일자 표시를 위해서 같은 데이터($frev[birth])의 표현방식을 $data[birth]와 $data[birth_]에서 두 가지로 정의했습니다.
$data[open_birth]=$frev["open_birth"];

$lun2sol_year  = date("Y");
$lun2sol_month = date("n", $frev[birth]);
$lun2sol_day   = date("d", $frev[birth]);

$lun2sol_day   = lun2sol($lun2sol_year,$lun2sol_month,$lun2sol_day);  // 위의 내용은 위에서 추출된 회원의 생일을 음력으로 가정하고 양력날짜로 전환한 것입니다.

$lun2sol_month = date("$lun2sol_day[1]"); // 음력생일을 양력으로 전환한 값의 양력월
$lun2sol_day   = date("$lun2sol_day[1]월 $lun2sol_day[2]일"); // 음력생일을 양력으로 전환한 값의 날짜

// 아래는 표현방식...

// 우선.... 양력생일자($data[open_birth]==0) 전체를 아이디와 이름 양력생일로 보여주고...

// 음력 생일자($data[open_birth]==1) 중에서 양력으로 전환된 생일값의 월이 이번달과 같은 회원( $lun2sol_month==$now_month)은 아이디와 이름, 그리고 양력생일과 음력생일을 보여주는 것입니다.

// 그리고 나머지... 그러니까 음력 생일자 중에서 이번달에 생일이 아닌 회원은 그냥 공란으로 표시합니다.

if ( $data[open_birth]==0 )
echo " <a href=.javascriptvoid(window.open('./view_info.php?member_no=$data[no]','view_info','width=400,height=510,toolbar=no,scrollbars=yes'))>$data[user_id] $data[name] - $data[birth]</a></p> ";
elseif ( $data[open_birth]==1 && $lun2sol_month==$now_month )
echo " <a href=.javascriptvoid(window.open('./view_info.php?member_no=$data[no]','view_info','width=400,height=510,toolbar=no,scrollbars=yes'))>$data[user_id] $data[name] - $lun2sol_day(음$data[birth_])</a></p> ";
else
echo " ";
}
echo " ";
}

mysql_close($conn);
?>


제가 사용한 방법은 이렇구요....

조금은 무식한 방식으로 음력생일자를 처리하는 것일지도 모르겠지만.... 거의 대부분의 경우를 커버할 수 있을 것 같다는 생각은 듭니다^^ (서버에 얼마나 무리를 주는지는 모르겠지만... 저희 동호회는 회원이 그다지 많지 않거든요^^)

위의 내용을 살펴보시고... 혹시 서버에 주는 무리를 줄일 수 있는 좋은 방법이나, 기타 의견이 있으신 분은 말씀해 주세요~~~ 저도 더 좋은 방향으로 수정하고 싶으니까요^^

그럼.... 많은 분들이 성공하시길......

출처 : http://www.nzeo.com/bbs/zboard.php?id=cgi_tip&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=음력&select_arrange=headnum&desc=asc&no=1694
?

공부 게시판

공부에 도움되는 글을 올려주세요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.18 950284
346 응용 프로그래밍 WIndows Application의 실행 속도 측정 file YooN 2023.09.06 3906
345 웹 프로그래밍 메모리 부족 현상 (allowed memory size of 134217728 bytes..) YooN 2023.08.01 2950
344 웹 프로그래밍 Guzzle - cURL error 60: SSL certificate problem: unable to get local issuer certificate 문제 해결 file YooN 2023.07.30 3126
343 웹 프로그래밍 XE 캐시파일 재성생후 404 Oops, Sorry. Page is not found! 나올때 YooN 2023.07.29 2847
342 응용 프로그래밍 [Apple] 엔터프라이즈 계정신청 (Enterprise Program) file YooN 2023.03.27 1386
341 웹 프로그래밍 XE - " Fatal error: Class 'Object' not found in " / class 낫파운드 오류 file YooN 2023.03.20 964
340 응용 프로그래밍 [MSA] MSA란 무엇인가? 개념 이해하기 file YooN 2023.01.26 986
339 웹 프로그래밍 iOS 앱 개발을 위한 인증서 생성 및 관리 file YooN 2023.01.18 1038
338 프로그래밍 [ iOS ] 앱 스토어 개인, 회사, 엔터프라이즈 차이점 file YooN 2023.01.09 778
337 웹 프로그래밍 PHP 파서 이해하기 (<?php의 php를 생략하고 간단히 <? 태그 와 ?> 태그를 사용하는 방법) YooN 2016.08.10 1173
336 프로그래밍 SVN의 cleanup 에러시 해결방법 YooN 2016.05.05 1590
335 프로그래밍 [오류해결] svn cleanup failed-previous operation has not finished; run cleanup if it was interrupted file YooN 2016.05.05 1446
334 프로그래밍 TortoiseSVN 계정변경 file YooN 2016.05.05 969
333 프로그래밍 SVN passwd 설정 : 계정 (users/passwd) file YooN 2016.05.04 1345
332 웹 프로그래밍 XE 비회원 글쓰기 항목 지우기 file YooN 2016.04.28 1335
331 응용 프로그래밍 메모리 영역 (code, data, stack, heap) file YooN 2016.03.23 1539
330 응용 프로그래밍 [SVN] Subversion 명령들 file YooN 2016.02.06 1757
329 응용 프로그래밍 IBM JDK 1.6 에서 Spring 2.5.2를 사용할 때 GenericTypeResolver 에서 NullPointerException이 발생하는 문제 YooN 2016.01.27 1589
328 웹 프로그래밍 오른쪽 마우스 금지 소스 / 드래그 금지 소스 YooN 2016.01.20 1168
327 응용 프로그래밍 [전자정부 표준프레임워크] 톰캣(Tomcat) 설치하기 file YooN 2016.01.02 1290
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 18 Next
/ 18


즐겨찾기 (가족)

JAESOO's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너