RadarURL

조회 수 5295 추천 수 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 928053
2326 웹 프로그래밍 제로보드 회원 개인별 스케쥴러를 겸한 초간편 달력 file JaeSoo 2006.02.03 4896
» 웹 프로그래밍 제로보드에서 월별 생일자 표시 문제 해결 (음력생일자도 가능) file JaeSoo 2006.02.03 5295
2324 데이터베이스 mysql에서 사용자 계정 비밀번호 변경 방법 JaeSoo 2006.02.16 8861
2323 웹 프로그래밍 제로보드에서 비회원의 경우에 회원정보 열람 불가 JaeSoo 2006.02.16 5702
2322 웹 프로그래밍 제로보드에서 어드민페이지에서 그룹사용자의 레벨변경 문제 file JaeSoo 2006.02.16 5890
2321 윈도우즈 C 드라이브 루트의 fswlog.txt 파일.. file JaeSoo 2006.02.19 6178
2320 웹 프로그래밍 새 창에 열기와 특정 프레임에 문서 열기 JaeSoo 2006.02.19 5508
2319 웹 프로그래밍 간단하고 빠른 페이지포워딩 JaeSoo 2006.02.23 5970
2318 웹 프로그래밍 관리자 페이지 업그레이드 (나이,성별,생년,로그인,사진리사이즈) file JaeSoo 2006.02.24 4357
2317 웹 프로그래밍 관리자 페이지 정렬기능 JaeSoo 2006.02.25 4979
2316 웹 프로그래밍 웹마스터를 위한 Google 정보 JaeSoo 2006.02.25 4953
2315 경제 재활용쓰레기의 종류와 쓰레기를 줄일수있는 방안 JaeSoo 2006.02.27 6084
2314 웹 프로그래밍 최근 게시물보기 속도 빠르게 만들기 JaeSoo 2006.03.01 4818
2313 웹 프로그래밍 ZendOptimizer Pass 9/10 enable 하기 JaeSoo 2006.03.01 4257
2312 웹 프로그래밍 제로보드의 짧은 답글 고치기 JaeSoo 2006.03.03 6094
2311 경제 화장품 싸게 사는법 JaeSoo 2006.03.03 8831
2310 기타 헷갈리기 쉬운 우리 말 바로 알기 JaeSoo 2006.03.03 5503
2309 웹 프로그래밍 미니위니 에디터 설치하기 JaeSoo 2006.03.03 5658
2308 웹 프로그래밍 "미니위니 에디터" 설치후에 기본적 추가사항과 참고할 부분 JaeSoo 2006.03.03 6515
2307 웹 프로그래밍 제로보드 태그로만 글작성시 "내용을 입력하세요" 안뜨게.. JaeSoo 2006.03.16 4791
Board Pagination Prev 1 ... 3 4 5 6 7 8 9 10 11 12 ... 124 Next
/ 124


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

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

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

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

JServer.kr

제이서버 메타블로그

재수 티스토리


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

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너