PHP:phpで簡単なカレンダーを作成する方法

phpで現在の年月のカレンダーを表示するサンプルを作成しました。

WEBサイトを構築しているとカレンダーを表示したい場合があります。
営業日カレンダーイベントカレンダーなど、様々な箇所で利用されています。

ツールやライブラリーなど色々ありますが、それらを使用せずに
phpで簡単なカレンダーを作成した時の方法をメモします。


phpで簡単なカレンダーを作成

※テーブルで出力する場合の方法です。

PHP

「$year」「$month」に取得したいカレンダーの年月を指定します。
「$calendar」にカレンダーの情報を格納します。

<?php

// 現在の年月を取得
$year = date('Y');
$month = date('n');

// 月末日を取得
$last_day = date('j', mktime(0, 0, 0, $month + 1, 0, $year));

$calendar = array();
$j = 0;

// 月末日までループ
for ($i = 1; $i < $last_day + 1; $i++) {

    // 曜日を取得
    $week = date('w', mktime(0, 0, 0, $month, $i, $year));

    // 1日の場合
    if ($i == 1) {

        // 1日目の曜日までをループ
        for ($s = 1; $s <= $week; $s++) {

            // 前半に空文字をセット
            $calendar[$j]['day'] = '';
            $j++;

        }

    }

    // 配列に日付をセット
    $calendar[$j]['day'] = $i;
    $j++;

    // 月末日の場合
    if ($i == $last_day) {

        // 月末日から残りをループ
        for ($e = 1; $e <= 6 - $week; $e++) {

            // 後半に空文字をセット
            $calendar[$j]['day'] = '';
            $j++;

        }

    }

}

?>

HTML

「$calendar」をループさせ、カレンダーの値を出力します。

<?php echo $year; ?>年<?php echo $month; ?>月のカレンダー
<br>
<br>
<table>
    <tr>
        <th>日</th>
        <th>月</th>
        <th>火</th>
        <th>水</th>
        <th>木</th>
        <th>金</th>
        <th>土</th>
    </tr>

    <tr>
    <?php $cnt = 0; ?>
    <?php foreach ($calendar as $key => $value): ?>

        <td>
        <?php $cnt++; ?>
        <?php echo $value['day']; ?>
        </td>

    <?php if ($cnt == 7): ?>
    </tr>
    <tr>
    <?php $cnt = 0; ?>
    <?php endif; ?>

    <?php endforeach; ?>
    </tr>
</table>

CSS

見やすいように、スタイルを調整します。

<style type="text/css">
table {
    width: 100%;
}
table th {
    background: #EEEEEE;
}
table th,
table td {
    border: 1px solid #CCCCCC;
    text-align: center;
    padding: 5px;
}
</style>

下記のようにカレンダーが出力されます。

※下記は2014年7月のカレンダーを出力した場合です。

calendar


オリジナルで作成していた方がカレンダーにイベント情報を入れたり等の
カスタマイズがしやすいのでいいと思います。

また関数にしておくと使いやすいかもしれないです。

Facebook:FacebookのShare(シェア)ボタンを設置する方法

FacebookShareシェアボタンをサイトに設置する方法を記載します。

Facebook

facebook_share_1

Facebookの「シェア」とは、共有したい情報を自分の周りの人に広めることができる機能です。
「シェア」した場合、ニュースフィードや自分のタイムラインにシェアした内容を表示する為、友達と共有することができます。
また、シェアした情報に自分自身のコメントを入れて投稿することもできます。

この「シェア」ボタンをサイトやブログ等に設置すれば、シェアした方の周りの人も見る可能性があるので
サイトへのアクセスアップに繋がると思います。


FacebookのShare(シェア)ボタンを設置

※Facebookにログインしている必要があります。

下記の「Share Button」ページにアクセスします。

https://developers.facebook.com/docs/plugins/share-button/

Share(シェア)ボタンを作成するページが表示されます。

facebook_share_3

「URL to share」にシェアボタンを作成するページのURLを入力します。

facebook_share_4

「Layout」で設置するボタンのレイアウトを選択することができます。

facebook_share_5

選択するとボタンのプレビューが下に表示されます。
よければ、「Get Code」をクリックします。

facebook_share_6

「Get Code」をクリックするとポップアップで挿入するコードが表示されます。

facebook_share_7

bodyタグの下に「Get Code」でコピーしたコードを貼り付けます。

<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/ja_JP/sdk.js#xfbml=1&version=v2.0";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

「シェア」ボタンを設置したい場所に下記のコードを記述します。
「data-href=””」にシェアしたいURLを指定します。

<div class="fb-share-button" data-href="http://raining.bear-life.com/" data-type="button_count"></div>

正しく設置できれば、サイトに「シェア」ボタンが表示されます。

facebook_share_2


シェアボタンを押しても反映されない場合

環境によっては「シェア」ボタンを押しても反映されないことがあったので、
その場合は下記の方法でも「シェア」ボタンを設置することが可能です。

下記URLの「u=」の後に「シェア」ボタンを設置したいURLを記述します

※「http://raining.bear-life.com/」を記述した場合

https://www.facebook.com/sharer/sharer.php?u=http://raining.bear-life.com/

上記にアクセスすると、シェアするページを開くことができるので、
ポップアップさせて表示すればOKです。

<a href="javascript:void(0);" onclick="window.open('https://www.facebook.com/sharer/sharer.php?u=http://raining.bear-life.com/', '', 'width=600,height=400');">シェア</a>

また、テキストリンクの箇所をオリジナルの画像を使用してもOKです。

Fuelphp:Agentクラスでエラーが起きた場合の対処方法

FuelphpAgentクラスを使用している時にエラーが起きたことがあったので、
そのエラーが起きた時の対処方法をメモします。

FuelphpのAgentクラスを使用していると、古いバージョンの場合にエラーが起きる可能性があります。

下記のようなエラーが発生しました。

Warning!

ErrorException [ Warning ]: file_get_contents(http://browsers.garykeith.com/stream.asp?Lite_PHP_BrowsCapINI) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 410 Gone

COREPATH/classes/agent.php @ line 446:

445:	ini_set('user_agent', 'Fuel PHP framework - Agent class (http://fuelphp.com)');
446:	$data = file_get_contents(static::$config['browscap']['url']);
447:	default:

UserAgentを判定する時に使用するURL(browscapファイル)のサイトが閉鎖してしまったようで
URLが変更になっておりました。

このようなエラーが起きた場合は、取得するURLを変更する必要があります。

下記に対処方法を記述します。


FuelphpのAgentクラスでエラーが起きた場合の対処方法

コアクラスの「fuel/core/config/agent.php」で読み込むファイルを指定しているので、
オーバーライドして「fuel/app/config/agent.php」を作成(コピー)します。

次のURLを読み込むように変更します。

http://browscap.org/stream?q=Lite_PHP_BrowsCapINI

ファイルをコピーしたら下記のように変更します。

変更前

<?php

return array(

    'browscap' => array(

        'enabled' => true,

        'url' => 'http://browsers.garykeith.com/stream.asp?Lite_PHP_BrowsCapINI',

        'method' => 'wrapper',

        'file' => '/tmp/php_browscap.ini',
    ),

「url」で指定しているファイルを変更します。

変更後

<?php

return array(

    'browscap' => array(

        'enabled' => true,

        'url' => 'http://browscap.org/stream?q=Lite_PHP_BrowsCapINI',

        'method' => 'wrapper',

        'file' => '/tmp/php_browscap.ini',
    ),

上記のように変更し、サーバにアップすればエラーが出なくなります。


また、下記の方法でもOKです。

browscapファイルをダウンロードし、ローカルに設置したファイルを読み込みます。

※「fuel/app/config/lite_php_browscap.ini」に設置した場合

<?php

return array(

    'browscap' => array(

        'enabled' => true,

        'url' => 'http://browscap.org/stream?q=Lite_PHP_BrowsCapINI',

        'method' => 'local',

        'file' => APPPATH . 'config/lite_php_browscap.ini',
    ),

「method」を「local」に変更し、
「file」に読み込むファイル「lite_php_browscap.ini」を
指定すればダウンロードしたファイルを読み込むことができます。


Agentクラスを使用してエラーが起きた場合はチェックしてみてください。

Chrome:ブラウザ上のカラーコードを取得するカラーピッカー「ColorPick Eyedropper」

WEBサイトを構築している時にブラウザ上に表示されているコンテンツの色を調べたい場合があります。

Chrome拡張機能で「ColorPick Eyedropper」を使用すると指定した箇所のカラーコードを取得することが可能です。

今回はChromeのブラウザ上に表示されているコンテンツのを調べることができるカラーピッカーアドオンColorPick Eyedropper」をご紹介します。

ColorPick Eyedropper

ColorPick_1

ColorPick Eyedropper」のアイコンをクリックし、調べたい箇所をクリックするだけでカラーコードを取得することができます。
また、RGBの値も表示してくれます。

サイトを構築する際に結構便利なChrome拡張機能です。

下記にChrome拡張機能ColorPick Eyedropper」を追加し、使用した時の方法をメモします。


「ColorPick Eyedropper」の使用方法

1.下記URLにアクセスします。

ColorPick Eyedropper

2.「+ 無料」ボタンをクリックし、「ColorPick Eyedropper」をChromeに追加します。

ColorPick_2

3.メッセージボックスが表示されるので、「追加」をクリックします。

ColorPick_3

4.追加するとヘッダーメニューに「ColorPick Eyedropper」のアイコンが表示されます。

ColorPick_4

5.アイコンをクリックするとカーソルが「十字マーク」になり、選択できる状態になります。

ColorPick_5

6.調べたい箇所をクリックするとカラーコードが表示されます。

ColorPick_6


表示されたカラーコードはそのままコピーできます。
サイト内の色を取得したい時に便利な拡張機能なのでおすすめです。

Linux:ログファイルの中身を空(サイズを0)にする

Linuxサーバログファイルの中身をサイズを0)にする方法をメモします。

サーバのログファイルは、ログを定期的に削除していないと
どんどんサーバの容量が大きくなってしまいます。
特にApacheのアクセスログなどはWEBサイトにアクセスがあるたびに溜まってしまうので注意です。

定期的にログを削除したり、ローテーションするなどの対応が必要になります。

以前の記事でファイルの中身を空にする方法を記載してました。

Linux:出力結果やテキストをファイルに書き出す方法

下記の方法を使用していましたが、中身は空になるのですがサイズが0になりません。

echo '' > hoge.txt

他に方法があるか調査し、色々と試してみました。
下記にLinuxファイル中身を空サイズを0)にした時の方法を記載します。


Linuxでファイルの中身を空(サイズを0)にする

空にしたいファイルの場所に移動します。

※access_logファイルを空にする場合

下記のコマンドを実行するとファイルを空にすることができます。

: > access_log

「:」は0を返すようなのでファイルサイズが0になります。

また、下記の方法でも対応できます。
空ファイル(nullデバイス)で上書きします。

cp /dev/null access_log

この場合、メッセージが表示されるかもしれません。

cp: `access_log` を上書きしてもよろしいですか(yes/no)? 

yseで上書きすればファイルサイズが0になります。


サーバの容量やログファイルなどは定期的にチェックし、
サイズが大きい場合は削除するなどの対応をするといいと思います。