Canlender

황인환·2024년 5월 28일
<?php
 if(isset($_GET['year'])){
     $year=$_GET['year'];
 }else{
       $year=date("Y");
 }
 if(isset($_GET['month'])){
     $month=$_GET['month'];
 }else{
     $month=date("m");
 }
?>

이 부분은 처음 코드들을 실행하면 $_GET['']변수가 할당되어있으면 (get방식으로 정보를 받았으면) 그 정보가 $year이나$month에 할당되고 아니면 현재 년과 월이 각각 date함수로 인해서 할당된다.

<div class="title">
  <h1>Calender</h1>
  <form action="" method="GET">
  	<select name="year">
    	<?php for($i=1950; $i<=2050; $i++) {?>
        <option value="<?=$i?>" <?php if($year == $i){echo "selected";}?> ><?=$i?><?php } ?>
    </select>

	<select name="month">
         <?php for($i=1; $i<=12; $i++) {?>
         <option value="<?=$i?>" <?php if($month == $i){echo "selected";}?> ><?=$i?><?php } ?>
     </select>
     <button type="submit">선택</button>
  </form>
</div>

<?php if($year == $i){echo "selected";}?> ><?=$i?>
이 코드는 $year변수가 for문 안에 $i랑 같으면 option태그 안에 selected 기능이 활성화되는 함수이다.
=는 대입
-> 결과 option의 제일 마지막에 고정 ex)2050년 12월
+) 다른 옵션 선택해도 마지막에 고정
==는 비교연산자 이지만 타입은 안같아도 됨
-> 문자열"1" 과 정수1을 같다고함
-> 결과 지정된 함수에 고정 ex)현재년 현재월
+) 다른 옵션 선택시 그 선택에 고정 ex) 2022년 11월 선택 거기 고정
===엄격하게 구분함
-> 문자열"1" 과 정수1을 다르다고함
->결과 option의 제일 첫번째에 고정 ex)1950년 1월
+) 다른 옵션 선택해도 첫번째에 고정

접속 직후option 선택 후

<hr>

예시
<?php
  $thisMonth=$year."-".$month."-01";
  $startDay=strtotime($thisMonth);
  $blank=date("w",$startDay);
  $lastDay=date("t",$startDay);
?>

$thisMonth변수는 현재년도와 현재달의 1일을 구하는 변수이다.
$startDay변수에서 strtotime함수는 1970년 시작부터 지금까지 시간을 초로 나타내준다.
$blank는 date함수의 w옵션으로 매월의 시작요일을 숫자로 알려준다.
ex) 일 0 월 1 화 2
$lastDay는 date함수의 t옵션으로 매월 마지막 일을 알려준다. ex)28,29,30,31

<?php for($i=1; $i<=$blank; $i++){?>
    <div class=item></div>
<?php }?>
blank
<?php for($i=1; $i<=$lastDay; $i++){ ?>
    <div class=item><?=$i?></div>
<?php }?>
lastday

calender.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <style>
            .title{display: flex;}
            .item{width: 14%; height: 100px; border: 1px solid #aaa; float: left;}
            .week{width: 14%; height: 30px; border: 1px solid #aaa; float: left; text-align: center;}
        </style>
    </head>
    <body>
        <?php
        if(isset($_GET['year'])){
            $year=$_GET['year'];
        }else{
            $year=date("Y");
        }
        if(isset($_GET['month'])){
            $month=$_GET['month'];
        }else{
            $month=date("m");
        }
        ?>
        <div class="title">
        <h1>Calender</h1>
        <form action="" method="GET">
            <select name="year">
                <?php for($i=1950; $i<=2050; $i++) {?>
                <option value="<?=$i?>" <?php if($year == $i){echo "selected";}?> ><?=$i?><?php } ?>
            </select>
            
            <select name="month">
                <?php for($i=1; $i<=12; $i++) {?>
                <option value="<?=$i?>" <?php if($month == $i){echo "selected";}?> ><?=$i?><?php } ?>
            </select>
            <button type="submit">선택</button>
        </form>
        </div>
    <hr>
    <div class="week">Sunday</div>
    <div class="week">Monday</div>
    <div class="week">Tuesday</div>
    <div class="week">Wednesday</div>
    <div class="week">Thurday</div>
    <div class="week">Friday</div>
    <div class="week">Saturday</div>
    <?php
        $thisMonth=$year."-".$month."-01";
        $startDay=strtotime($thisMonth);
        $blank=date("w",$startDay);
        $lastDay=date("t",$startDay);
    ?>
    <?php for($i=1; $i<=$blank; $i++){?>
    <div class=item></div>
    <?php }?>
    <!-- 일표시 -->
    <?php for($i=1; $i<=$lastDay; $i++){ ?>
    <div class=item><?=$i?></div>
    <?php }?>
    </body>
</html>

---Normaltic Study 6주차 ---

0개의 댓글