Fogeaters, Light The World.

25

2017-Dec

[php] 달력 구현 소스

작성자: title: MoonBlonix IP ADRESS: *.64.228.3 조회 수: 1859

출처 :: https://www.phpschool.com/link/tipntech/65572

-> 일부 php 문법 수정함



<?php

/********** 사용자 설정값 **********/ 

$startYear = date( "Y" );

$endYear = date( "Y" ) + 30;


/********** 입력값 **********/ 

$year = ( $_GET['toYear'] )? $_GET['toYear'] : date( "Y" );

$month = ( $_GET['toMonth'] )? $_GET['toMonth'] : date( "m" );

$doms = array( "일", "월", "화", "수", "목", "금", "토" );


/********** 계산값 **********/ 

$mktime = mktime( 0, 0, 0, $month, 1, $year ); // 입력된 값으로 년-월-01을 만든다 

$days = date( "t", $mktime ); // 현재의 year와 month로 현재 달의 일수 구해오기 

$startDay = date( "w", $mktime ); // 시작요일 알아내기 


// 지난달 일수 구하기 

$prevDayCount = date( "t", mktime( 0, 0, 0, $month, 0, $year ) ) - $startDay + 1; 

$nowDayCount = 1; // 이번달 일자 카운팅 

$nextDayCount = 1; // 다음달 일자 카운팅 

// 이전, 다음 만들기 

$prevYear = ( $month == 1 )? ( $year - 1 ) : $year; 

$prevMonth = ( $month == 1 )? 12 : ( $month - 1 ); 

$nextYear = ( $month == 12 )? ( $year + 1 ) : $year; 

$nextMonth = ( $month == 12 )? 1 : ( $month + 1 ); 

// 출력행 계산 

$setRows = ceil( ( $startDay + $days ) / 7 ); 

?>


<center> 

<table style="border-collapse:collapse;"> 

    <form method="get"> 

    <tr> 

        <td style="padding:10;border-width:1;border-style:solid;"> 

        <select name="toYear" onchange="submit();"> 

        <?php for( $i = $startYear; $i < $endYear; $i++ ){ ?> 

        <option value="<?php echo $i; ?>" <?php echo ($i==$year)?"selected":""; ?>><?php echo $i; ?></option> 

        <?php } ?> 

        </select>년 

        <select name="toMonth" onchange="submit();"> 

        <?php for( $i = 1; $i <= 12; $i++ ) { ?> 

        <option value="<?php echo $i; ?>" <?php echo ($i==$month)?"selected":""; ?>><?php echo $i; ?></option> 

        <?php } ?> 

        </select>월 

        </td> 

    </tr> 

    </form> 

</table> 


<br> 


<table style="border-collapse:collapse;"> 

    <tr> 

        <td style="padding:10;border-width:1;border-style:solid;"> 

        <input type="button" onclick="location.href='<?php echo $_SERVER['PHP_SELF']; ?>?toYear=<?php echo $prevYear; ?>&toMonth=<?php echo $prevMonth; ?>'" value=" << "> 

        <?php echo $year; ?>년 <?php echo $month; ?>월 

        <input type="button" onclick="location.href='<?php echo $_SERVER['PHP_SELF']; ?>?toYear=<?php echo $nextYear; ?>&toMonth=<?php echo $nextMonth; ?>'" value=" >> "> 

        </td> 

    </tr> 

</table> 


<br> 


<table cellpadding=0 cellspacing=0 style="border-collapse:collapse;"> 


    <tr> 

        <?php for( $i = 0; $i < count( $doms ); $i++ ) { ?> 

        <td align="center" style="padding:6;border-width:1;border-style:solid;"><?php echo $doms[$i]; ?>요일</td> 

        <?php } ?> 

    </tr> 


    <?php for( $rows = 0; $rows < $setRows; $rows++ ) { ?> 

    <tr> 

        <?php 

        for( $cols = 0; $cols < 7; $cols++ ) 

        { 

            // 셀 인덱스 만들자 

            $cellIndex    = ( 7 * $rows ) + $cols; 

            ?> 


            <?php 

            // 이번달이라면 

            if ( $startDay <= $cellIndex && $nowDayCount <= $days ) { ?> 

            <td align="center" style="padding:6;border-width:1;border-style:solid;"> 

                <?php if ( date( "w", mktime( 0, 0, 0, $month, $nowDayCount, $year ) ) == 6 ) { ?> 

                <b><font color="blue"><?php echo $nowDayCount++; ?></font></b> 

                

                <?php } else if ( date( "w", mktime( 0, 0, 0, $month, $nowDayCount, $year ) ) == 0 ) { ?> 

                <b><font color="red"><?php echo $nowDayCount++; ?></font></b> 

                

                <?php } else { ?> 

                <b><?php echo $nowDayCount++; ?></b> 

                <?php } ?> 

            </td> 

            

            <?php 

            // 이전달이라면 

            } else if ( $cellIndex < $startDay ) { ?> 

            <td align="center" style="padding:6;border-width:1;border-style:solid;"> 

            <font color="gray"><b><?php echo $prevDayCount++; ?></b></font> 

            </td> 

            

            <?php 

            // 다음달 이라면 

            } else if ( $cellIndex >= $days ) { ?> 

            <td align="center" style="padding:6;border-width:1;border-style:solid;"> 

            <font color="gray"><b><?php echo $nextDayCount++; ?></b></font> 

            </td> 

            <?php } 

        } 

        ?> 

    </tr> 

    <?php } ?> 

</table>

</center>

profile
profile

title: MoonBlonix

2017.12.25 22:49
*.64.228.3

음력변환, 공휴일 소스는 아래에서 참고

제대로 된 공휴일 구현은 DB를 이용하는 수밖에...

https://www.phpschool.com/link/tipntech/35030

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 [Web] 클라우드 IDE + 2 title: MoonBlonix 2017-06-25 15126
132 [vsftpd] root(루트) 접속 title: MoonBlonix 2018-04-15 1734
131 [php] 모바일 인식 title: MoonBlonix 2018-03-19 1365
130 [nginx] php 502 Bad Gateway 에러 해결 title: MoonBlonix 2018-03-19 1416
129 라즈베리파이를 위한 nginx와 php7.0 저장소 title: MoonBlonix 2018-02-24 1471
128 [javascript] Date사용 및 날자 계산 title: MoonBlonix 2017-12-29 1619
» [php] 달력 구현 소스 + 1 title: MoonBlonix 2017-12-25 1859
126 [javascript] 팝업 열기 title: MoonBlonix 2017-12-18 1728
125 [php] 날짜/시간 함수정리 title: MoonBlonix 2017-12-09 1583
124 [mysql] 조건문 사용 (if, case), (isnull, ifnull, nvl) title: MoonBlonix 2017-12-07 1362
123 [mysql] 서브쿼리(subquery) + 1 title: MoonBlonix 2017-12-07 1891
122 [jQuery] select box 제어 title: MoonBlonix 2017-10-14 1639
121 [mysql] mysqli_fetch_array, mysqli_fetch_assoc 비교 title: MoonBlonix 2017-10-12 1479
120 [php] 조회수 중복방지 구현 + 1 title: MoonBlonix 2017-10-06 1574
119 [mysql] JOIN 사용 + 2 title: MoonBlonix 2017-10-04 1376
118 [DataBase] ORM(Object-Relational Mappings)에 대하여 title: MoonBlonix 2017-10-04 1343
117 CK에디터 파일(백업용) file title: MoonBlonix 2017-09-25 1551
116 [javascript] js, css 파일 동적 로딩 title: MoonBlonix 2017-09-20 1398
115 [web] 페이지 속도 개선 + 1 title: MoonBlonix 2017-09-17 1379
114 [jQuery] html 갈아엎기 title: MoonBlonix 2017-09-16 1619
113 [jQuery] 성능 최적화 title: MoonBlonix 2017-09-15 1860