PHPでウェブの世界と繋がろう!
menu
ホーム > PHPサンプル > 日付系 > カレンダーを作る

カレンダーを作る

Pocket

サンプルコード sample code

サンプルコード
カレンダーを作ります。

– サンプル Click Here ! –

<h3>カレンダー年月選択</h3>
<?php
//年月の指定があれば
if(isset($_POST&#91;'yyyy'&#93;) && $_POST&#91;'yyyy'&#93; != '' && isset($_POST&#91;'mm'&#93;) && $_POST&#91;'mm'&#93; != ''){
    $yyyy = $_POST&#91;'yyyy'&#93;;
    $mm =   $_POST&#91;'mm'&#93;;
//指定がなければ本日の年月
}else{
    $yyyy = date('Y');
    $mm =   date('m');
}
$dd = 1;
?>

<form method="POST" action="<?php $_SERVER&#91;'PHP_SELF'&#93;; ?>">

<select name="yyyy">
<?php
for($i = 1990; $i <= 2030; $i++){
     echo '<option value="'.$i.'"'; if($i == $yyyy) echo ' selected'; echo '>'.$i.'</option>'."\n";
}
?>
</select>年

<select name="mm">
<?php
for($i = 1; $i <= 12; $i++){
    echo '<option value="'.$i.'"'; if($i == $mm) echo ' selected'; echo '>'.$i.'</option>'."\n";
}
?>
</select>月

<input type="submit" value="送信">

</form>



<h3>カレンダー</h3>
<?php
//カレンダー関数
function calendar($yyyy, $mm, $dd){

    //選択日のタイムスタンプ
    $iSctDayTimeStamp = mktime(0,0,0,$mm,$dd,$yyyy);
    ?>
    <table border ="0" bgcolor="#cccccc" cellspacing="1">
    <?php

    ### 月列
    if(checkdate($mm, 1, $yyyy)){
    ?>
        <tr>
        <td bgcolor="#ffffff" colspan="7">
        <?php echo $yyyy; ?>年<?php echo $mm; ?>月 (<?php echo date('t',mktime(0, 0, 0, $mm, 1, $yyyy)); ?>日間)
        </td>
        </tr>
    <?php
    }
    ?>

    <?php
    ### 曜日列
    ?>
    <tr>
    <td bgcolor="#ffd0d0">日</td>
    <td bgcolor="#f7ffde">月</td>
    <td bgcolor="#f7ffde">火</td>
    <td bgcolor="#f7ffde">水</td>
    <td bgcolor="#f7ffde">木</td>
    <td bgcolor="#f7ffde">金</td>
    <td bgcolor="#def9ff">土</td>
    </tr>

    <?php
    ### 日付列

    //曜日NO
    $iWNoMthFst = date('w',mktime(0,0,0,$mm,1,$yyyy));//0:日~6:土

    //日付が始まる前の空白
    for($iFstWeekBnk = 0 ;$iFstWeekBnk < $iWNoMthFst ;$iFstWeekBnk++){
    ?>
        <td align='center' bgcolor='#FFFFFF'> </td>
    <?php
    }

    //日付記述 年月日の妥当性がtrueであればループ
    for($dd = 1 ;checkdate($mm, $dd, $yyyy); $dd++ ){

        //本日のタイムスタンプ
        $iTodayTimeStamp = mktime(0,0,0,date('m'),date('d'),date('Y'));
        //指定年月のループ日付のタイムスタンプ
        $iDisplayDaysTimeStamp = mktime(0,0,0,$mm,$dd,$yyyy);

        //1日が日曜日のとき 1 8 15 22 29が == 1となる
        //日曜日
        if(($dd+$iWNoMthFst)%7 == 1){
            echo '<tr><td bgcolor="';
            //本日
            if($iTodayTimeStamp == $iDisplayDaysTimeStamp) echo '#ffe293';
            else echo '#ffd0d0';
            ?>
            "><?php echo $dd; ?></td>
        <?php
        }
        //土曜日
        elseif(($dd+$iWNoMthFst)%7 == 0){
            echo '<td bgcolor="';
            //本日
            if($iTodayTimeStamp == $iDisplayDaysTimeStamp) echo '#ffe293';
            else echo '#def9ff';
            ?>
            "><?php echo $dd; ?></td></tr>
        <?php
        }
        //平日
        else{
            echo '<td bgcolor="';
            //本日
            if($iTodayTimeStamp == $iDisplayDaysTimeStamp) echo '#ffe293';
            else echo '#ffffff';
            ?>
            "><?php echo $dd; ?></td>
        <?php
        }
    }
    //指定月最終日の曜日$ddは32になっている
    $iWNoMthEnd = date('w',mktime(0,0,0,$mm,$dd,$yyyy));
    if($iWNoMthEnd != 0){
        //もし32が日曜日すなわち0ならそれで終了
        for($iWeekBlank = 0 ; $iWeekBlank < 7-$iWNoMthEnd; $iWeekBlank++){
            //0以外は が必要
            echo '<td align="center" bgcolor="#FFFFFF"> </td>';
        }
    }
    ?>
    </tr></table>
    <?php
}// end function
?>

<?php
//カレンダー表示
calendar($yyyy, $mm, $dd);
?>
実行結果
カレンダー年月選択

カレンダー

2013年11月 (30日間)
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

– サンプル Click Here ! –


タグ(=記事関連ワード)

タグ: , ,

日付

投稿日:2012年3月1日
最終更新日:2014年02月17日

関連記事

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

http://www.tryphp.net/phpsample-date-calendar/trackback/