묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
달력의 년도를 늘이려면 어떻게 해야 하나요?
2007.07.04 23:25
http://www.alwayshappy.co.kr/zeroboard/zboard.php?id=lecschedual예전에 이 게시판을 통해서 받은 달력입니다. 현재 잘 사용하고 있습니다.
저는 PHP를 모르기 때문에 강좌나 질문//팁 등을 오가며 얻어들은 얄팍한 지식으로(많은 분들의 글들이 도움이 되었지요. 저에게는...) 그나마 연구실 일정을 사용할 수 있었습니다.
그런데 문제는 년도가 제한적이라는 것입니다. 현재 달력에는 2005-2007년만 나오게 되어 있습니다.
소스를 모르니 아무리 소스를 살펴보고, 게시판을 뒤져보고 강좌를 뒤져보아도 연도를 늘일 수 있는 방법을 모르겠습니다. 현재는 버튼을 누르면 2005, 2006, 2007년도만 선택하게 되어 있습니다. 년도를 좀 더 늘리고 싶은데 어디를 고쳐야 할까요... 아래는 calendar.htm파일의 내용입니다.
혹시 view.php나 기타 php 파일소스가 있어야 한다면 댓글 달아주시면 내일 다시 올리도록 하겠습니다.
현재 사용되고 있는 또다른 사이트(개인 홈페이지)를 연결해 놓았습니다.
그럼, 누구든 답변해 주실때까지 기다리겠습니다.
행복한 하루 되세요. ^^
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<title>일정</title>
<style type="text/css">
<!--
.style1 {
font-size: 12px;
color: #FFFFFF;
}
.style4 {
font-size: 12pt;
font-weight: bold;
}
.style5 {font-size: 24pt}
-->
</style>
</head>
<body>
<table width="900" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><table width="100%" border="0" cellpadding="0" cellspacing="0" style="filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FF6633', endColorstr='#FFFFFF', gradientType='1');">
<tr>
<td height="52" valign="middle"><p class="style1"> <span class="style4"> <span class="style5"> 달력</span></span></p>
</td>
</tr>
</table></td>
</tr>
<tr>
<td><HTML>
<HEAD>
<TITLE> </TITLE>
<STYLE type="text/css"> <!--
BODY {background-image : url('icon/ia0403.jpg') ; background-repeat : repeat ; background-attachment : fixed; font-size: 20px; color : black ; font-weight: bold; }
td.today {color: white; font-weight:bold; background-color: crimson; border:solid thin 1pt; border-color:#fff #f00 #f00 #fff; }
td.noday{color: navy; font-weight:normal; background-color:cornsilk; border:solid thin 1pt; }
td.sunday{color: crimson; font-weight:bold; background-color:gold;border:solid thin 1pt;}
td.satday{color: blue; font-weight:normal; background-color:lightcyan; border:solid thin 1pt;}
td.week{color: black; font-weight:normal; background-color:peachpuff; border:solid thin 1pt; border-color:cornsilk orange orange cornsilk; }
--> </STYLE>
<SCRIPT language="JavaScript"> <!--
function calendar(yyyy,orimm){
var mm=orimm-1; //배열 번호와 맞추기 위해 1을 뺌
var nalsoo=new Array(31,28,31,30,31,30,31,31,30,31,30,31); //12달의 기본 일수
var yoil=new Array("일", "월", "화", "수", "목", "금", "토"); //요일
var kd = new Date(); //날짜 객체 선언
var kyear = kd.getFullYear(); //4자리 연도 얻기
var kmonth = kd.getMonth(); //달 얻기.0월부터 시작함에 주의
var kdate = kd.getDate(); //날 얻기
var kday = kd.getDay(); //0이 일요일, 6이 토요일
var fd=kd; // 이달 1일의 요일을 얻기 위한 객체 선언
fd.setFullYear(yyyy);
fd.setMonth(mm);
var fyear = fd.getFullYear(); //4자리 연도 얻기
var fmonth = fd.getMonth(); //달 얻기.0월부터 시작함에 주의
var fdate = fd.getDate(); //날 얻기
var fday = fd.getDay(); //0이 일요일 6이 토요일
firstday=fd; // 달 1일로 설정하기 위한 객체 선언
firstday.setDate(1); // 날짜를 1일로 설정
fday1=firstday.getDay(); // 1일의 요일 얻기
fmend=nalsoo[fmonth]; //이 달의 날짜 수를 얻음
if ((fmonth==1)&&(((fyear %4==0)&&(fyear %100 !=0))||(fyear % 400 ==0 ))) fmend=29;
// 4년마다 2월은 29일, 100년 째는 28일, 400년 째는 29일임
document.write('<TABLE>'); // 줄 마감
document.write('<TR align=center><TD colspan=7 class=week>');
document.write('<font size=5 color=black><b>');
document.write(fyear+'+ '+ ' 년 '+(fmonth+1)+' 월</b>');
document.write('</font></TD></TR><TR>')
for (i=0;i<=6;i++){ // 각 요일의 칸을 만들고 요일을 표시
document.write('<TD class=week>'+((i==0)?'<font color=red>'+ ':'')+ yoil[i]+ '</TD>');
}
document.write('</TR><TR align=center>');
vcol=0; // 날짜 표시 칸을 첫 칸으로 설정
for (i=0;fday1>i;i++){ // 1일 전까지 빈 칸으로 만들기 위한 제어문
document.write('<TD> </TD>');
vcol++; // 빈 칸을 만든 후 칸 수 증가시킴
}
for ( i=1; i<=fmend; i++){ // 1일부터 마지막 날까지 반복
if(kyear==fyear&&kmonth==fmonth&&kdate==fdate&&kday==fday&&i==kdate)
document.write('<TD class=today>'+ '+i+'</TD>'); //오늘이면 today 스타일로 표시
else if(vcol==0) document.write('<TD class=sunday>'+i+'</TD>'); //일요일이면
else if(vcol==6) document.write('<TD class=satday>'+i+'</TD>'); //토요일이면
else document.write('<TD class=noday>'+i+'</TD>'); //그외 평범한 날이면
vcol++;
if(vcol==7){ //7칸을 만들면 줄 바꾸어 새 줄을 만들고 다시 첫 칸부터 시작
document.write('</TR><TR>'+ ');
vcol=0;
}
}
for (i=vcol;i<=6;i++){ //마지막 날에서 남은 요일의 빈 칸 만들기
document.write('<TD> </TD>');
}
document.write('</TR></TABLE>');
}
//--> </SCRIPT>
</HEAD>
<BODY><BR>
<BR>
<SCRIPT language="JavaScript"> <!--
var vr=0;
vyear=prompt("보고자 하는 달력의 연도를 적어주세요", ""); //사용자로부터 연도 입력 받음
document.write('<TABLE width="730" height="680" bgcolor="navy" border="1">');
document.write('<TR height="40" bgcolor="RED" border="1"> <TD align="center" colspan="4"> <FONT size="5" color="white"> '+ vyear + '년 달력 </FONT> </TD></TR>');
document.write(' <TR height="210"> <TD bgcolor="lavender" align="center" valign="top">')
for ( vr=1; vr<13; vr++){ // 1월부터 12월까지 반복
calendar(vyear,vr);
if(vr==12) break; //12월이 되면 벗어나야 한 줄을 추가하지 않음
if(vr%4==0) document.write('</TD> </TR> <TR height="210"> <TD bgcolor="lavender" align="center" valign="top">') //만약 4개월째면 표에 줄 추가
else document.write('</TD> <TD bgcolor="lavender" align="center" valign="top">'); //아니면 칸 추가
}
document.write('</TD> </TR> </TABLE>') //표 닫음
//--> </SCRIPT>
</BODY>
</HTML>
</td>
</tr>
</table>
</body>
</html>
저는 PHP를 모르기 때문에 강좌나 질문//팁 등을 오가며 얻어들은 얄팍한 지식으로(많은 분들의 글들이 도움이 되었지요. 저에게는...) 그나마 연구실 일정을 사용할 수 있었습니다.
그런데 문제는 년도가 제한적이라는 것입니다. 현재 달력에는 2005-2007년만 나오게 되어 있습니다.
소스를 모르니 아무리 소스를 살펴보고, 게시판을 뒤져보고 강좌를 뒤져보아도 연도를 늘일 수 있는 방법을 모르겠습니다. 현재는 버튼을 누르면 2005, 2006, 2007년도만 선택하게 되어 있습니다. 년도를 좀 더 늘리고 싶은데 어디를 고쳐야 할까요... 아래는 calendar.htm파일의 내용입니다.
혹시 view.php나 기타 php 파일소스가 있어야 한다면 댓글 달아주시면 내일 다시 올리도록 하겠습니다.
현재 사용되고 있는 또다른 사이트(개인 홈페이지)를 연결해 놓았습니다.
그럼, 누구든 답변해 주실때까지 기다리겠습니다.
행복한 하루 되세요. ^^
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<title>일정</title>
<style type="text/css">
<!--
.style1 {
font-size: 12px;
color: #FFFFFF;
}
.style4 {
font-size: 12pt;
font-weight: bold;
}
.style5 {font-size: 24pt}
-->
</style>
</head>
<body>
<table width="900" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><table width="100%" border="0" cellpadding="0" cellspacing="0" style="filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr='#FF6633', endColorstr='#FFFFFF', gradientType='1');">
<tr>
<td height="52" valign="middle"><p class="style1"> <span class="style4"> <span class="style5"> 달력</span></span></p>
</td>
</tr>
</table></td>
</tr>
<tr>
<td><HTML>
<HEAD>
<TITLE> </TITLE>
<STYLE type="text/css"> <!--
BODY {background-image : url('icon/ia0403.jpg') ; background-repeat : repeat ; background-attachment : fixed; font-size: 20px; color : black ; font-weight: bold; }
td.today {color: white; font-weight:bold; background-color: crimson; border:solid thin 1pt; border-color:#fff #f00 #f00 #fff; }
td.noday{color: navy; font-weight:normal; background-color:cornsilk; border:solid thin 1pt; }
td.sunday{color: crimson; font-weight:bold; background-color:gold;border:solid thin 1pt;}
td.satday{color: blue; font-weight:normal; background-color:lightcyan; border:solid thin 1pt;}
td.week{color: black; font-weight:normal; background-color:peachpuff; border:solid thin 1pt; border-color:cornsilk orange orange cornsilk; }
--> </STYLE>
<SCRIPT language="JavaScript"> <!--
function calendar(yyyy,orimm){
var mm=orimm-1; //배열 번호와 맞추기 위해 1을 뺌
var nalsoo=new Array(31,28,31,30,31,30,31,31,30,31,30,31); //12달의 기본 일수
var yoil=new Array("일", "월", "화", "수", "목", "금", "토"); //요일
var kd = new Date(); //날짜 객체 선언
var kyear = kd.getFullYear(); //4자리 연도 얻기
var kmonth = kd.getMonth(); //달 얻기.0월부터 시작함에 주의
var kdate = kd.getDate(); //날 얻기
var kday = kd.getDay(); //0이 일요일, 6이 토요일
var fd=kd; // 이달 1일의 요일을 얻기 위한 객체 선언
fd.setFullYear(yyyy);
fd.setMonth(mm);
var fyear = fd.getFullYear(); //4자리 연도 얻기
var fmonth = fd.getMonth(); //달 얻기.0월부터 시작함에 주의
var fdate = fd.getDate(); //날 얻기
var fday = fd.getDay(); //0이 일요일 6이 토요일
firstday=fd; // 달 1일로 설정하기 위한 객체 선언
firstday.setDate(1); // 날짜를 1일로 설정
fday1=firstday.getDay(); // 1일의 요일 얻기
fmend=nalsoo[fmonth]; //이 달의 날짜 수를 얻음
if ((fmonth==1)&&(((fyear %4==0)&&(fyear %100 !=0))||(fyear % 400 ==0 ))) fmend=29;
// 4년마다 2월은 29일, 100년 째는 28일, 400년 째는 29일임
document.write('<TABLE>'); // 줄 마감
document.write('<TR align=center><TD colspan=7 class=week>');
document.write('<font size=5 color=black><b>');
document.write(fyear+'+ '+ ' 년 '+(fmonth+1)+' 월</b>');
document.write('</font></TD></TR><TR>')
for (i=0;i<=6;i++){ // 각 요일의 칸을 만들고 요일을 표시
document.write('<TD class=week>'+((i==0)?'<font color=red>'+ ':'')+ yoil[i]+ '</TD>');
}
document.write('</TR><TR align=center>');
vcol=0; // 날짜 표시 칸을 첫 칸으로 설정
for (i=0;fday1>i;i++){ // 1일 전까지 빈 칸으로 만들기 위한 제어문
document.write('<TD> </TD>');
vcol++; // 빈 칸을 만든 후 칸 수 증가시킴
}
for ( i=1; i<=fmend; i++){ // 1일부터 마지막 날까지 반복
if(kyear==fyear&&kmonth==fmonth&&kdate==fdate&&kday==fday&&i==kdate)
document.write('<TD class=today>'+ '+i+'</TD>'); //오늘이면 today 스타일로 표시
else if(vcol==0) document.write('<TD class=sunday>'+i+'</TD>'); //일요일이면
else if(vcol==6) document.write('<TD class=satday>'+i+'</TD>'); //토요일이면
else document.write('<TD class=noday>'+i+'</TD>'); //그외 평범한 날이면
vcol++;
if(vcol==7){ //7칸을 만들면 줄 바꾸어 새 줄을 만들고 다시 첫 칸부터 시작
document.write('</TR><TR>'+ ');
vcol=0;
}
}
for (i=vcol;i<=6;i++){ //마지막 날에서 남은 요일의 빈 칸 만들기
document.write('<TD> </TD>');
}
document.write('</TR></TABLE>');
}
//--> </SCRIPT>
</HEAD>
<BODY><BR>
<BR>
<SCRIPT language="JavaScript"> <!--
var vr=0;
vyear=prompt("보고자 하는 달력의 연도를 적어주세요", ""); //사용자로부터 연도 입력 받음
document.write('<TABLE width="730" height="680" bgcolor="navy" border="1">');
document.write('<TR height="40" bgcolor="RED" border="1"> <TD align="center" colspan="4"> <FONT size="5" color="white"> '+ vyear + '년 달력 </FONT> </TD></TR>');
document.write(' <TR height="210"> <TD bgcolor="lavender" align="center" valign="top">')
for ( vr=1; vr<13; vr++){ // 1월부터 12월까지 반복
calendar(vyear,vr);
if(vr==12) break; //12월이 되면 벗어나야 한 줄을 추가하지 않음
if(vr%4==0) document.write('</TD> </TR> <TR height="210"> <TD bgcolor="lavender" align="center" valign="top">') //만약 4개월째면 표에 줄 추가
else document.write('</TD> <TD bgcolor="lavender" align="center" valign="top">'); //아니면 칸 추가
}
document.write('</TD> </TR> </TABLE>') //표 닫음
//--> </SCRIPT>
</BODY>
</HTML>
</td>
</tr>
</table>
</body>
</html>
댓글 3
-
김홍
2007.07.04 23:28
여기다 질문하는 것이 맞는지 모르겠네요. ^^; -
바람처럼
2007.07.05 15:57
위 소스로는 사용자로부터 원하는 년도를 입력받아 그해의 1년12달 달력을 그려주는데요??
2009년, 2010년도 잘 됩니다.
(달력내용은 보지않았습니다. 일자와 요일이 맞는지 여부등... 그리고 뭐 그 이후 년도도 시험해 보지 않았습니다.)
말씀하신 내용으로 봐서는 다른 소스에 있는 버튼에 년도가 걸려있지않나 싶네요.
시험한 곳 : http://inote.byus.net/study/cal_javascript.html -
김홍
2007.07.14 21:45
바람처럼 님 감사합니다. 꾸벅....
지금보니 제가 질문자체를 잘못 올렸네요... 쩝...
여하튼 감사하구여... 나중 인사보시면 제가 지우도록 할께요. 수고스럽게 해드려서 죄송해요... 다시 문제를 파악해서 올려야 겠네요. ^^
행복한 하루 되세요.