<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PHP独学のコツ &#8211; PHPプログラミングの教科書 [php1st.com]</title>
	<atom:link href="https://php1st.com/memo/feed" rel="self" type="application/rss+xml" />
	<link>https://php1st.com</link>
	<description>気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。</description>
	<lastBuildDate>Tue, 26 Jan 2021 06:41:37 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>
	<item>
		<title>PHPの作成・実行に必要なソフトウェア</title>
		<link>https://php1st.com/1087</link>
		
		<dc:creator><![CDATA[西沢直木]]></dc:creator>
		<pubDate>Fri, 26 Oct 2012 00:48:17 +0000</pubDate>
				<category><![CDATA[PHP独学のコツ]]></category>
		<guid isPermaLink="false">http://php1st.com/?p=1087</guid>

					<description><![CDATA[ExcelやWordと違いPHPの作業は1つのソフトウェアで完結しない PHPを独学しようとして、最初につまづくのがソフトウェアの問題です。 1つの事情は、ExcelやWordでドキュメントを作成する作業とイメージが違う [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2>ExcelやWordと違いPHPの作業は1つのソフトウェアで完結しない</h2>
<p>PHPを独学しようとして、最初につまづくのがソフトウェアの問題です。</p>
<p>1つの事情は、<strong>ExcelやWordでドキュメントを作成する作業とイメージが違う</strong>ことです。<br />
<span id="more-1087"></span><br />
Excelで住所録を作成する場合、Excelをインストールして、Excelを起動して、Excelに住所録を入力すれば済みます。</p>
<p>これに対して、PHPで何かを作る場合、ソフトウェアをインストールしてからブラウザ画面に何かを表示するまでの流れは次のようになります。</p>
<p>・必要なソフトウェア一式（Webサーバー、PHPライブラリ、テキストエディタなど）をインストールする<br />
・テキストエディタにPHPスクリプトを入力して「php」という拡張子で保存する<br />
・Webサーバーを起動する<br />
・ブラウザを起動して「http://localhost/test.php」のようなURLにアクセスする</p>
<p>すべての作業をExcelやWord、またはホームページ作成ソフトといった<strong>1つのソフトウェアで完結するわけではない</strong>ので、少しとまどう方がいます。</p>
<p>スイスイと進められる方には何の問題もないように思えますが、実際に、ここでつまづいて学習をやめてしまう方がいるのも事実です（難しいというより、面倒に感じてしまうため）。</p>
<p>「どうしてもPHPを習得するぞ！」という意志のある方を除いて、少しでも面倒なことがあれば、辞めたくなるのは当然です。</p>
<p>ただ、<strong>ちょっとした点</strong>をクリアすれば良いことなので、ここで辞めてしまうのは非常に残念なことです。</p>
<p>PHPの「インストールから最初の1ページまで」をスムーズに進めるには、PHPスクリプトの<strong>作成と実行で別々のソフトウェア</strong>が必要だと理解する必要があります。典型的には、次のような組み合わせになります。</p>
<p>・<strong>作成</strong>に必要なソフトウェア &#8212; テキストエディタ<br />
・<strong>実行</strong>に必要なソフトウェア &#8212; Webサーバー、PHPライブラリなど</p>
<h2>PHPの実行に必要なソフトウェアを一括インストールできるXAMPP</h2>
<p>実行に必要なソフトウェアについて「など」と書いたので、いくつもインストールする必要がありそうですが、<strong>すべてをまとめてインストールしてくれる「XAMPP」</strong>というソフトウェアがあるので心配は不要です。</p>
<p>○XAMPPのダウンロードサイト<br />
http://www.apachefriends.org/jp/xampp-windows.html</p>
<p>XAMPPをインストールすると、Webサーバー（Apache）、PHP、データベース（MySQL）というPHPスクリプトの実行に必要な基本的なソフトウェアに加え、phpMyAdminという、Webアプリケーションでデータベースの作成に欠かせないデータベース管理ツールもインストールされます。</p>
<p>これらを1つずつインストールするのは大変な作業ですが、XAMPPでは数分で完了します。<strong>これからPHPの学習を始める方には必須ツール</strong>です。</p>
<h2>PHPの作成にはテキストエディタが必要</h2>
<p>作成に必要な「テキストエディタ」は、秀丸エディタなどがあります。Windowsのメモ帳でも作成は可能ですが、できれば、<strong>メモ帳以外のテキストエディタ</strong>をインストールすることをおすすめします。</p>
<p>その理由や、XAMPPのインストール方法などを含めて<a href="http://amazon.co.jp/o/ASIN/4797369140/wpx-22" target="_blank">『PHPプログラミングの教科書』</a>に書きました。XAMPPのインストールから、最初の1ページの作成、実行まで、イラストを使ってわかりやすく説明しているので、つまづきそうになった方は、ぜひ参考にしてください。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PHP独学のカギは「カレンダー」</title>
		<link>https://php1st.com/1052</link>
		
		<dc:creator><![CDATA[西沢直木]]></dc:creator>
		<pubDate>Thu, 25 Oct 2012 02:32:47 +0000</pubDate>
				<category><![CDATA[PHP独学のコツ]]></category>
		<guid isPermaLink="false">http://php1st.com/?p=1052</guid>

					<description><![CDATA[独学が続かないときは、カレンダーの作成を目標に PHPは比較的習得しやすいプログラミング言語ですが、どうしても独学するとつまづくという方がいます。 能力の問題だと思ってあきらめてしまうのは、もったいないことです。 独学で [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2>独学が続かないときは、カレンダーの作成を目標に</h2>
<p>PHPは比較的習得しやすいプログラミング言語ですが、どうしても独学するとつまづくという方がいます。</p>
<p>能力の問題だと思ってあきらめてしまうのは、もったいないことです。</p>
<p>独学でつまづく1つの理由は、<span id="more-1052"></span><strong>目標を見出せない</strong>ことです。</p>
<p>大きな目標（PHPの習得・入門レベルの卒業）をクリアするには、小さい目標を少しずつクリアしていくのが効果的です。</p>
<p>その意味で、<strong>PHPの学習に目標を見出せない方は、カレンダーの作成を目指して</strong>みてください。</p>
<p><img decoding="async" src="http://www.nishi2002.com/wp-content/uploads/2012/10/220.png" alt="PHPスクリプトのカレンダー" title="PHPスクリプトのカレンダー" width="184" height="213" class="alignnone size-full wp-image-957" /></p>
<h2>カレンダー作成をおすすめする理由</h2>
<ul>
<li>簡単すぎず、難しすぎず、やる気が持続しやすい</li>
<li>プログラミング言語の基礎概念が適度に含まれる</li>
<li>完成後の発展イメージが見えて学習を続けたくなる</li>
</ul>
<p>カレンダーは、<strong>簡単すぎず、難しすぎず</strong>、適度な緊張感を持って取り組めるテーマです。完成イメージもわかりやすいので、どこまで完成形に近づいているのか手に取るようにわかり、挫折しにくいテーマです。</p>
<p>カレンダーをおすすめする理由は難易度だけではありません。</p>
<p>カレンダーには、プログラミング言語の基本的な概念が適度に含まれています。カレンダーの完成を目指していくと、<strong>自然とプログラミング言語の知識が身につく</strong>ということです。</p>
<p>つまり、よくわからないプログラミング言語の難しい仕組みの解説をダラダラ学んでいくのではなく、「これはカレンダーの～に使えそう」などと成果のイメージを持って進めて行くことができます。</p>
<p>また、カレンダーが完成すると、「スケジュール帳に加工できそう」「予約システムにも使えそう」など、<strong>実践的なアプリケーションへの発展</strong>的なイメージもわいてきます。</p>
<p>ぜひ、<strong>独学に行き詰っている方は、カレンダーを目指してください</strong>。基礎知識が身に付き、今後の展望も開けてくることと思います。</p>
<p>行き詰っていない方も、基礎が習得できたかの確認のため、カレンダーを作ってみましょう。</p>
<p>スイスイと独学できてしまっている方は、無理にカレンダーを作る必要はありませんが。</p>
<p>※宣伝で恐縮ですが、私が書いた<a href="http://amazon.co.jp/o/ASIN/4797369140/wpx-22" target="_blank">『PHPプログラミングの教科書』</a>では、カレンダーの作成方法も詳しく解説しています。その後、スケジュール帳へと加工します。ぜひ参考にしてください。</p>
<div style="margin-top:3px;margin-bottom:20px;font-size:12px;line-height:150%;">
<table>
<tr>
<td width="300" valign="top">
<a href="http://amazon.co.jp/o/ASIN/4797369140/wpx-22" target="_blank"><img decoding="async" class="alignleft" align="left" style="margin-left:10px;margin-right:10px; border: 1px black solid;" src="https://php1st.com/wp-content/uploads/2019/08/php2.jpg" alt="PHPプログラミングの教科書" title="PHPプログラミングの教科書" ></a><br />
<a  style="font-size:14px;line-height:130%;" href="http://amazon.co.jp/o/ASIN/4797369140/wpx-22" target="_blank">PHPプログラミングの教科書</a><br />
カレンダーからスケジュール帳を作成します。その前提になるフォームの知識もしっかり習得できます。やさしいイラストによる解説、字が大きくフルカラーで読んでいて眠くなりにくい入門書です。<br />
<a href="http://php1st.com/toc/" target="_blank">『PHPプログラミングの教科書』の目次・構成</a>
</td>
</tr>
</table>
</div>
<h2>PHPでカレンダーを作成する流れ</h2>
<p>参考までに、PHPでカレンダーを作成するときの手順を書いておきます。</p>
<ul>
<li>月の日付を1日から月末日まで表示する</li>
<li>この日付を表形式（HTMLのtableタグ）にレイアウトする</li>
<li>日付を土曜日で改行する</li>
<li>まだ月末日より前のときは、次の週を始める</li>
<li>1日を正しい曜日まで移動する</li>
<li>1日より前、月末日より後に空白を表示する</li>
</ul>
<p>これをPHPスクリプトに置き換えていけば、カレンダーは完成するはずです。</p>
<p>具体的な作り方は、<a href="http://php1st.com/1001/" target="_blank">PHPでカレンダーを作ろう</a>で紹介しています。</p>
<h2>PHPスクリプトによるカレンダーとスケジュール帳の例</h2>
<p>カレンダーができれば、スケジュール帳や予約システムにも加工したくなりませんか？カレンダーという単純そうなテーマが、基礎から応用への学習意欲をかきたててくれるはずです。</p>
<p><img fetchpriority="high" decoding="async" src="http://www.nishi2002.com/wp-content/uploads/2012/09/001.png" alt="PHPによるスケジュール帳の作成" title="PHPによるスケジュール帳の作成" width="463" height="286" class="alignnone size-full wp-image-690" /></p>
<h2>上記のカレンダー・スケジュール帳の作り方は、この本で説明しています</h2>
<p>上の画像で紹介したカレンダーやスケジュール帳の作り方も説明しているのが、<a href="http://amazon.co.jp/o/ASIN/4797369140/wpx-22" target="_blank">『PHPプログラミングの教科書』</a>です。</p>
<div style="margin-top:3px;margin-bottom:20px;font-size:12px;line-height:150%;">
<table>
<tr>
<td width="300" valign="top">
<a href="http://amazon.co.jp/o/ASIN/4797369140/wpx-22" target="_blank"><img decoding="async" class="alignleft" align="left" style="margin-left:10px;margin-right:10px; border: 1px black solid;" src="https://php1st.com/wp-content/uploads/2019/08/php2.jpg" alt="PHPプログラミングの教科書" title="PHPプログラミングの教科書" ></a><br />
<a  style="font-size:14px;line-height:130%;" href="http://amazon.co.jp/o/ASIN/4797369140/wpx-22" target="_blank">PHPプログラミングの教科書</a><br />
カレンダーからスケジュール帳を作成します。その前提になるフォームの知識もしっかり習得できます。やさしいイラストによる解説、字が大きくフルカラーで読んでいて眠くなりにくい入門書です。<br />
<a href="http://php1st.com/toc/" target="_blank">『PHPプログラミングの教科書』の目次・構成</a>
</td>
</tr>
</table>
</div>
<p>カレンダーを作るために必要な基本的な構文は、レシピを見ながら<strong>1行ずつ入力</strong>するイメージで習得することができます。</p>
<p>カレンダーの作成は「スケジュール帳」の説明でふれています。1行ずつ入力というわけではありませんが、上で紹介したカレンダー作成の手順を順を追って説明し、<strong>「日付の一覧表示」から少しずつカレンダーへと加工</strong>していくことができます。</p>
<p>カレンダーからスケジュール帳への加工は、手順を追うというより、「スケジュール帳」のようなフォームアプリケーションで必要な考え方を細かく説明していくスタイルです。</p>
<p>単にサンプルコードが動いて良かったというだけでなく、一般的なPHPを作るときの<strong>汎用的な知識を習得</strong>することができます。</p>
<p>もちろん、できるだけ難しい話はしないように工夫しています。一度手に取っていただけると幸いです。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PHPでカレンダーを作成しよう</title>
		<link>https://php1st.com/1001</link>
		
		<dc:creator><![CDATA[西沢直木]]></dc:creator>
		<pubDate>Mon, 22 Oct 2012 12:22:40 +0000</pubDate>
				<category><![CDATA[PHP独学のコツ]]></category>
		<category><![CDATA[人気記事]]></category>
		<guid isPermaLink="false">http://php1st.com/?p=1001</guid>

					<description><![CDATA[作成するカレンダーのイメージ ※以下の内容は[php1st]の「3-4 スケジュール帳（P.192～）」から、カレンダーの作成に関する内容を抜粋して再構成したものです。 カレンダーを作る目的が「最終的には予約システムを作 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2>作成するカレンダーのイメージ</h2>
<p>※以下の内容は[php1st]の「3-4 スケジュール帳（P.192～）」から、カレンダーの作成に関する内容を抜粋して再構成したものです。</p>
<div class="pt">
カレンダーを作る目的が<strong>「最終的には予約システムを作りたい」</strong>という方は、WordPressの方が簡単に解決できます（基本機能はノンプログラミングで完成できます）。以下の記事にまとめましたので参考にしてください。</p>
<p><a href="http://www.nishi2002.com/3341.html">WordPressプラグイン「MTS Simple Booking C」による予約システムの作成</a>
</div>
<p>　これから、次のようなカレンダーを作成します。簡単すぎず難しすぎず、PHPの基礎が習得できたか力試しになり、スケジュール帳や予約への応用など、今後の学習の展望も見えてきます。ざっとPHPの基礎を習得した方は、ぜひ、チャレンジしてみてください。</p>
<div id="attachment_1021" style="width: 185px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-1021" src="http://php1st.com/wp-content/uploads/2012/10/211.png" alt="作成するカレンダー" title="作成するカレンダー" width="175" height="163" class="size-full wp-image-1021" /><p id="caption-attachment-1021" class="wp-caption-text">作成するカレンダー</p></div>
<p>　ポイントは2つあります。1つは<span id="more-1001"></span><strong>行列形式のレイアウト</strong>の作成方法、もう1つは、そのレイアウトに<strong>1から31までの日付を表示</strong>していく方法です。特に、新たな週を作るための<strong>改行</strong>が重要です。</p>
<h2>ステップ0：行列形式へのレイアウトにはtableタグを使う</h2>
<p>　PHPスクリプトを記述する前に、準備として行列形式のレイアウトを作成する<strong>HTMLのtableタグ</strong>を紹介しておきます。2行2列の簡単なテーブルを例に、その構造を見てみましょう。</p>
<pre class="brush: php; title: 2行2列のtableタグ; notranslate">
&lt;table border=&quot;1&quot;&gt;
  &lt;tr&gt;
    &lt;td&gt;1&lt;/td&gt;
    &lt;td&gt;2&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;3&lt;/td&gt;
    &lt;td&gt;4&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
</pre>
<div id="attachment_1008" style="width: 643px" class="wp-caption alignnone"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1008" src="http://php1st.com/wp-content/uploads/2012/10/502.png" alt="tableタグの構造" title="tableタグの構造" width="633" height="230" class="size-full wp-image-1008" srcset="https://php1st.com/wp-content/uploads/2012/10/502.png 633w, https://php1st.com/wp-content/uploads/2012/10/502-300x109.png 300w" sizes="auto, (max-width: 633px) 100vw, 633px" /><p id="caption-attachment-1008" class="wp-caption-text">tableタグの構造</p></div>
<p>　テーブル全体は&lt;table>～&lt;/table>の間に定義し、行を&lt;tr>～&lt;/tr>、列（セル）を&lt;td>～&lt;/td>の間に記述します。&lt;td>～&lt;/td>を1から7まで繰り返せば1日から7日まで表示でき、&lt;tr>～&lt;/tr>を5回繰り返せば、1週目から5週目までの行が作成できることはイメージできたでしょうか。早速、1日から31日までの日付を表示していきましょう。</p>
<h2>ステップ1：1日から月末日まで表示する（while文を使う）</h2>
<p>　1日から月末日までの日付を表示するには、while文が役立ちます。[php1st]（P.105）で作成したコードを利用して、好きな年月の日付を1日から月末日まで表示するコードを準備しましょう。次の例では、2012年2月の日付を表示しています。</p>
<pre class="brush: php; title: 1日から月末日まで表示する; notranslate">
&lt;?php
$y = 2012;
$m = 2;

$d = 1;
while (checkdate($m, $d, $y)) {
    echo $d;
    $d++;
}
?&gt;
</pre>
<p>○実行結果<br />
1234567891011121314151617181920212223242526272829</p>
<div class="pt">
　単純に横に表示しただけなので見づらいですが、これからレイアウトを直していくので気にする必要はありません。
</div>
<p>　checkdate関数の3つのパラメータ($m, $d, $y)はそれぞれ、月、日、年を示しています。while文によって$dが1、2、3…と変化するので、実行すると、上のように1から月末日までの数値（$d）が単純に1行で表示されます。</p>
<h2>ステップ2：日付を行列形式にレイアウトする（tableタグを使う）</h2>
<p>　ここから、カレンダーらしくするため、tableタグで作成するレイアウトの中に、$dを表示していきましょう。具体的には、tableタグの列（セル）を繰り返す「&lt;td>&lt;/td>」を「&lt;td>{$d}&lt;/td>」になるように変更します。</p>
<pre class="brush: php; highlight: [3]; title: tableタグの中に日付（$d）を表示するイメージ; notranslate">
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;ここに$dを埋め込む&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
</pre>
<pre class="brush: php; highlight: [1,2,9,13,14]; title: テーブルの中に日付を表示するスクリプト; notranslate">
&lt;table border=&quot;1&quot;&gt;
&lt;tr&gt;
&lt;?php
$y = 2012;
$m = 2;

$d = 1;
while (checkdate($m, $d, $y)) {
    echo &quot;&lt;td&gt;$d&lt;/td&gt;&quot;;
    $d++;
}
?&gt;
&lt;/tr&gt;
&lt;/table&gt;
</pre>
<div id="attachment_1012" style="width: 593px" class="wp-caption alignnone"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1012" src="http://php1st.com/wp-content/uploads/2012/10/085.png" alt="tableタグの中に日付を表示する" title="tableタグの中に日付を表示する" width="583" height="49" class="size-full wp-image-1012" srcset="https://php1st.com/wp-content/uploads/2012/10/085.png 583w, https://php1st.com/wp-content/uploads/2012/10/085-300x25.png 300w" sizes="auto, (max-width: 583px) 100vw, 583px" /><p id="caption-attachment-1012" class="wp-caption-text">○実行結果（tableタグの中に日付を表示する）</p></div>
<div class="pt">
　tableタグにある「border=&#8221;1&#8243;」は、テーブルの枠線の幅を指定するborder属性です。ここでは、最も細い枠線（1）を指定しています。
</div>
<h2>ステップ3：土曜日で改行する（if文を使う・&lt;/tr>を出力する）</h2>
<p>　カレンダーらしくするため、土曜日で改行しましょう。ここで言う改行とは、「&lt;/tr>」を出力してテーブルの行を終了するということです。さらに、次の週があるなら、「&lt;tr>」を出力して新たな行を準備する必要があります。そのイメージは次のようになります。</p>
<div id="attachment_1016" style="width: 531px" class="wp-caption alignnone"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1016" src="http://php1st.com/wp-content/uploads/2012/10/503.png" alt="土曜日で改行するイメージ" title="土曜日で改行するイメージ" width="521" height="235" class="size-full wp-image-1016" srcset="https://php1st.com/wp-content/uploads/2012/10/503.png 521w, https://php1st.com/wp-content/uploads/2012/10/503-300x135.png 300w" sizes="auto, (max-width: 521px) 100vw, 521px" /><p id="caption-attachment-1016" class="wp-caption-text">土曜日で改行するイメージ</p></div>
<p>　日付を表示するwhile文の中に、行（週）を終了して新たな週を開始するコードを記述しましょう。まず、土曜日で週を終了するには次のコードを記述します。</p>
<pre class="brush: php; title: 土曜日で改行する; notranslate">
// 今日が土曜日の場合は…
if (date(&quot;w&quot;, mktime(0, 0, 0, $m, $d, $y)) == 6) {
    // 週を終了
    echo &quot;&lt;/tr&gt;&quot;;
}
</pre>
<p>※まだ続きがあるので、このコードは入力する必要はありません。</p>
<p>　今日の曜日番号が6の場合は「&lt;/tr>」を出力しています。「date(&#8220;w&#8221;)」によって、0（日曜日）から始まる曜日番号を取得できます。その番号が6、つまり、土曜日の場合は「&lt;/tr>」と出力して行を終了するということです。</p>
<div class="pt">
　mktime関数は、現在の日付を示すタイムスタンプを取得しています。その意義がわからない場合は、[php1st]の「日付関数（P.67）」も参考にしてください。
</div>
<h2>ステップ4：新たな週を準備する（&lt;tr>を出力する）</h2>
<p>　続いて、新たな週を準備します。その条件は「次の日が存在する場合は」です。日付が妥当か調べるcheckdate関数を使っています。改行した土曜日の次の日が有効な日付であれば、次の週が存在するということです。</p>
<pre class="brush: php; title: 次の週がある場合は新たな行を準備する; notranslate">
// 今日が土曜日の場合は…
if (date(&quot;w&quot;, mktime(0, 0, 0, $m, $d, $y)) == 6) {
    // 週を終了
    echo &quot;&lt;/tr&gt;&quot;;

    // 次の週がある場合は新たな行を準備
    if (checkdate($m, $d + 1, $y)) {
        echo &quot;&lt;tr&gt;&quot;;
    }
}
</pre>
<p>　このコードを、while文で日付を表示した直後に記述します（$d++の前）。</p>
<div id="attachment_1017" style="width: 183px" class="wp-caption alignnone"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1017" src="http://php1st.com/wp-content/uploads/2012/10/086.png" alt="土曜日で改行したカレンダー" title="土曜日で改行したカレンダー" width="173" height="144" class="size-full wp-image-1017" /><p id="caption-attachment-1017" class="wp-caption-text">○実行結果<br />（土曜日で改行<br />
＋次の週の準備）</p></div>
<h2>ステップ5：1日の曜日まで空白を出力する（for文を使う）</h2>
<p>　なんとなくカレンダーらしくなってきましたが、最初の週に違和感があります。毎月1日は必ずしも左端（日曜日）とは限らないので、1日の該当する曜日まで空白を出力して移動する必要があります。それには、毎月1日の曜日番号を調べて、その位置まで空白を出力していきます。そのイメージは次のようになります。</p>
<div id="attachment_1018" style="width: 593px" class="wp-caption alignnone"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1018" src="http://php1st.com/wp-content/uploads/2012/10/504.png" alt="最初の週の曜日を調整" title="最初の週の曜日を調整" width="583" height="329" class="size-full wp-image-1018" srcset="https://php1st.com/wp-content/uploads/2012/10/504.png 583w, https://php1st.com/wp-content/uploads/2012/10/504-300x169.png 300w" sizes="auto, (max-width: 583px) 100vw, 583px" /><p id="caption-attachment-1018" class="wp-caption-text">最初の週の曜日を調整するイメージ</p></div>
<p>　空白を出力するというのは、「&lt;td>　&lt;/td>」のように何も表示しない列を出力するということです（レイアウトの都合で全角スペースを出力しています）。これを曜日番号の数だけ繰り返すことで、1日の日付を妥当な曜日まで“移動”することができます。この処理をコードにまとめると次のようになります。while文で1日から月末日までの表示を始める直前に記述します。</p>
<pre class="brush: php; highlight: [2,5,6,7]; title: 最初の週を調整する（1日の曜日まで移動する）; notranslate">
// 1日の曜日を取得
$wd1 = date(&quot;w&quot;, mktime(0, 0, 0, $m, 1, $y));

// その数だけ空白を表示
for ($i = 1; $i &lt;= $wd1; $i++) {
    echo &quot;&lt;td&gt;　&lt;/td&gt;&quot;;
}

// 1日から月末日までの表示
$d = 1;
while (checkdate($m, $d, $y)) {
…略…
}
</pre>
<div id="attachment_1019" style="width: 175px" class="wp-caption alignnone"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1019" src="http://php1st.com/wp-content/uploads/2012/10/087.png" alt="最初の週の曜日を調整" title="最初の週の曜日を調整" width="165" height="138" class="size-full wp-image-1019" /><p id="caption-attachment-1019" class="wp-caption-text">○実行結果（最初の週の曜日を調整）</p></div>
<h2>ステップ6：月末日から土曜日まで空白を出力する（for文を使う）</h2>
<p>　かなりカレンダーらしくなりましたが、月末日の曜日は必ずしも土曜日ではないことに注意が必要です。上の調整と同じように、最後の週に表示される月末日が土曜日以外の場合は土曜日まで空白を出力していく必要があります。そのコードをまとめます。これは、1日から月末日までの表示が終わった直後に記述します。</p>
<pre class="brush: php; highlight: [8,9,10,11]; title: 最後の週を調整する（土曜日まで移動する）; notranslate">
// 1日から月末日までの表示
$d = 1;
while (checkdate($m, $d, $y)) {
…略…
}

// 最後の週の土曜日まで移動
$wdx = date(&quot;w&quot;, mktime(0, 0, 0, $m + 1, 0, $y));
for ($i = 1; $i &lt; 7 - $wdx; $i++) {
    echo &quot;&lt;td&gt;　&lt;/td&gt;&quot;;
}
</pre>
<div id="attachment_1020" style="width: 174px" class="wp-caption alignnone"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1020" src="http://php1st.com/wp-content/uploads/2012/10/088.png" alt="最後の週を調整" title="最後の週を調整" width="164" height="138" class="size-full wp-image-1020" /><p id="caption-attachment-1020" class="wp-caption-text">○実行結果<br />
（最後の週を調整）</p></div>
<h2>ステップ7：カレンダーの年月を現在の年月にする（date関数・substr関数を使う）</h2>
<p>　これで、指定した年月のカレンダーを表示できるようになりました。ただし、年月を示す$y、$mには固定値が入っています。ここから先の作業で、選択メニューで選んだ年月を表示するカレンダーにカスタマイズしやすいように、現在の年月を表示するように変更しておきましょう。</p>
<p>　それには、スクリプトの先頭で現在の年月を6桁で取得して、4桁の年（$y）と2桁の月（$m）に分解します。substr関数がピンとこないときは、[php1st]の文字列関数のページ（P.61）も参考にしてください。</p>
<pre class="brush: php; highlight: [1,2,3,4,5,6]; title: 現在の年月を取得する（PHPスクリプトの先頭で）; notranslate">
&lt;?php
// 年月を取得する
$ym_now = date(&quot;Ym&quot;);
$y = substr($ym_now, 0, 4);
$m = substr($ym_now, 4, 2);
?&gt;
&lt;table border=&quot;1&quot;&gt;
…tableタグ以下省略…
</pre>
<h2>ステップ8：曜日ラベルを表示する（thタグを使う）【完成】</h2>
<p>　最後に、曜日ラベルを追加しておきましょう。それには、thタグを使います。tableタグの直後に記述します。以下に示す実際の記述を見れば、使い方はなんとなくわかるのではないでしょうか。</p>
<pre class="brush: php; highlight: [3,4,5,6,7,8,9]; title: 曜日ラベルを追加する; notranslate">
&lt;table border=&quot;1&quot;&gt;
&lt;tr&gt;
&lt;th&gt;日&lt;/th&gt;
&lt;th&gt;月&lt;/th&gt;
&lt;th&gt;火&lt;/th&gt;
&lt;th&gt;水&lt;/th&gt;
&lt;th&gt;木&lt;/th&gt;
&lt;th&gt;金&lt;/th&gt;
&lt;th&gt;土&lt;/th&gt;
&lt;/tr&gt;
…略…
</pre>
<div class="pt">
　わかりやすいように&lt;/th>で改行していますが、改行しなくても曜日ラベルは表示されます。
</div>
<p>　このように、&lt;tr>～&lt;/tr>の中に曜日ラベルを追加すると、現在の年月のカレンダーが完成です。実行結果は2012年5月の例です。</p>
<div id="attachment_1021" style="width: 185px" class="wp-caption alignnone"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1021" src="http://php1st.com/wp-content/uploads/2012/10/211.png" alt="完成したカレンダー" title="完成したカレンダー" width="175" height="163" class="size-full wp-image-1021" /><p id="caption-attachment-1021" class="wp-caption-text">○実行結果<br />
（完成した<br />
カレンダー）</p></div>
<h2>カレンダーのテンプレート</h2>
<p>　カレンダーからPHPスクリプトを取り除いたテンプレートを用意しました。それぞれのステップについて、理解できたか確認しながらPHPスクリプトを記述してみましょう。できるだけコピーペーストせずに、実際に入力してみることが重要です。</p>
<pre class="brush: php; title: 作成するカレンダーのテンプレート; notranslate">
&lt;?php
// ステップ7：現在の年月を取得する（date関数・substr関数）

?&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;tr&gt;
&lt;th&gt;日&lt;/th&gt;
&lt;th&gt;月&lt;/th&gt;
&lt;th&gt;火&lt;/th&gt;
&lt;th&gt;水&lt;/th&gt;
&lt;th&gt;木&lt;/th&gt;
&lt;th&gt;金&lt;/th&gt;
&lt;th&gt;土&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;?php
// ステップ5：1日の曜日まで空白を表示（for文）

// ステップ1：1日から月末日までを表示（while文）

    // ステップ2：今日の日付を表示（&lt;td&gt;～&lt;/td&gt;）

// ステップ3：今日が土曜日の場合は…（if文）
    // ステップ3：週を終了（&lt;/tr&gt;）

    // ステップ4：次の週がある場合は新たな行を準備（if文・&lt;tr&gt;）

// ステップ6：最後の週の土曜日まで移動（for文）
?&gt;
&lt;/tr&gt;
&lt;/table&gt;

</pre>
<h2>カレンダーのカスタマイズと応用</h2>
<p>　シンプルなカレンダーは完成です。ここからは、必要に応じてフォームの知識を付けて、どんどんカスタマイズしていきましょう。[php1st]では、最終的にスケジュール帳へと加工していきます。1行ずつ入力していくわけではないので、要点をしっかり習得しましょう。<br />
　ポイントは、カレンダーでクリックしてスケジュール登録画面に移動する方法です。<strong>メールフォームのように「送信」ボタンをクリックして画面を切り替えるPHPスクリプトとは異なる考え方</strong>が必要です。</p>
<div id="attachment_1027" style="width: 538px" class="wp-caption alignnone"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1027" src="http://php1st.com/wp-content/uploads/2012/10/505.png" alt="スケジュール帳" title="スケジュール帳" width="528" height="250" class="size-full wp-image-1027" srcset="https://php1st.com/wp-content/uploads/2012/10/505.png 528w, https://php1st.com/wp-content/uploads/2012/10/505-300x142.png 300w" sizes="auto, (max-width: 528px) 100vw, 528px" /><p id="caption-attachment-1027" class="wp-caption-text">スケジュール帳（カレンダー＋スケジュール登録画面）</p></div>
<p>　スケジュール帳のサンプルPHPスクリプト自体は、当Webサイトのトップページからダウンロードすることができますが、PHP入門にチャレンジしたばかりの方は、[php1st]の本文で学習していただくことをおすすめします。</p>
<div style="margin-left:200px;margin-top:2px;margin-bottom:10px;">
<a href="http://amazon.co.jp/o/ASIN/4797369140/wpx-22" target="_blank"><br />
<img loading="lazy" decoding="async" width="240" height="88" src="http://php1st.com/wp-content/uploads/2012/08/php1st3.png" alt="PHPでカレンダーやスケジュール帳を作成できます" title="PHPでカレンダーやスケジュール帳を作成できます" class="alignnone size-full wp-image-989" /><br />
</a>
</div>
<div style="margin-top:30px;margin-bottom:30px;">
▼if・whileの仕組みを短時間でつかみたい方におすすめ！<br />
<a href="http://amazon.co.jp/o/ASIN/B00E1HCERA/wpx-22" target="_blank"><img decoding="async" src="http://ecx.images-amazon.com/images/I/41o4jrwiZgL._SL160_.jpg" border="0"></a><br />
<a href="http://amazon.co.jp/o/ASIN/B00E1HCERA/wpx-22" target="_blank">90分で読める！WordPressテンプレートのifとwhile</a>
</div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
