カテゴリー別アーカイブ: PHP

Webサイト制作演習③~⑥ DBシステムまとめ

今回は技術的な話ではなく、システム構築そのものに対する記事です。

データベースを使ったシステム構築

先週から、データベースを使ったシステムの構築作業の講義を簡単に行った。
「システム構築」というと難しい響きだが、データベースを使ってやることはかなり限られる。

  • 追加
  • 更新
  • 検索
  • 削除

大きく分ければこの四種類だけ(閲覧も「全データを表示」するという検索の一種になる)。
SQLで言えば、「INSERT」「UPDATE」「SELECT」「DELETE」の四種である。
PHPではPDOを使って、これらのSQL文を利用できるので、「どんなデータを」「どんな風に表示するのか」を考え、実現する。
最終的にはこれらの作業が行える管理画面を作る事が目的になる。

プログラム的には
入力(データを打つ・ボタンを押す) → 処理(追加・削除・更新・検索) → 出力(結果を画面に表示)
の三工程までに単純化できる。
工程を単純にした上で書いていけば、やる事はそう難しくはない。

利用しているところで言えば、WordPressのダッシュボードもデータベースを利用したシステムの一つと言える。
また、PHPMyAdminも管理ツールではあるが、実際には「クライアント目線」に立った構築が求められる。
普段利用しているSNSなども、実際にはデータベースと連携しているが、顧客として使う時にはそれを意識する事は無い。「誰でも使える分かりやすいシステム」が理想形になる。

UI(ユーザーインターフェース)を意識したデザイン

「システム構築」なんていうと、プログラマーだけの仕事の様に思えるが、デザイナーの役割は従来より高まっている。上の項で述べた様に、システム画面は「クライアント目線」での使いやすさが非常に重要。
現状ではSNSや会社などで使われるローカルのシステムなど、いろんな場面で使う機会は多いはずだが、使い勝手の悪いシステムは多い。
ここで登場するのがUI(ユーザーインターフェース)という概念で、かなり幅広い意味があるが、ものすごく大雑把に言えば「使い勝手の良さ」を示す。
最近では「UIデザイン」「UIデザイナー」という言葉がよく使われる。単に見た目を考えるだけでなく、より使いやすいシステム画面を考えたデザインの事。
ボタンの押しやすさや、入力欄の量やメニューの配置など、一つ一つの工夫で、システムの使い勝手は大きく変わる。

スマホアプリの普及以後、これまで以上にUIの向上が求められる時代。
Webデザインでもそうだが、「クライアントの目線」に立った「使いやすさ」まで意識できると、デザイナーとしての幅は大きく広がる。
成果を出すUIデザイン9つのメソッド

「権限」について

システムを構築する上で、必要な項目はかなり単純化出来た。
しかし実際のWebシステムを構築する上で重要になるのが、「権限」である。
システム画面は基本的に、多くの人々が利用する。
その上で、それぞれがデータの管理を行うわけだが、そこで問題が発生する。
そもそも、不特定多数の誰もが、データベース上の全てのファイルを更新したり削除したりできる様な状態では、システムは成り立たない。

そこで、多くの場合はシステムに関わる人間を絞る為に、ログイン機能を導入する。
そもそもログインできる人間以外には触れらない状態にしておけば、間違いが起こる可能性は減る。

その上で、更にユーザー毎に権限を割り振る場合も多い。
SNSを筆頭にしたシステムでは、基本的に自分の投稿したものに関してのみ、変更や削除の権限が与えられる。
それに対し、ごく一部の管理者は全ての情報を一限で閲覧・変更・削除できる権限を持っている。

システムを構築する上では、「権限を幾つ用意するのか」、「それぞれどこまでできるのか」を考えるのも重要な要素になる。
基本的にはユーザー権限もデータベースに登録しておき、IF文などで使える機能を絞っていく

3月1日(火) Webサイト制作演習②

PHPステップアップ②~shuffleとarray_shift~

shuffle(配列);
配列を入れると、中身をバラバラに入れ替える関数
array_shift(配列);
配列の一番最初のデータを取り出す関数

以前のPHPの学習では、「rand」関数を使って、ランダムな文字列を実装した。

$kuji = array('大吉','中吉','小吉');
$result = rand(0,2);   //0~2のランダム表示
echo $kuji[$result]; //大吉、中吉、小吉のいずれかを表示

上記のような形であれば、「完全にランダム(ホントは厳密には違いますが……)」なくじ引きが実装できる。

しかし、次のような場合はどうだろう。

A君、B君、C君の三人が、掃除当番を決めようとしている。全員遊びにいきたいので、誰もやりたくはない。やりたくはないが、誰かがやらなくてはならない。
そこで、三人は公平さを重んじる為、くじ引きを行う事にした。
オーソドックスなスタイルで、紙を長細く三本に切り、一本だけ端を赤く塗る……赤を引いた一人が当番だ。
これを乱数で実装してみる。

$kuji = array('赤','白','白');

$Akun = $kuji[rand(0,2)];
$Bkun = $kuji[rand(0,2)];
$Ckun = $kuji[rand(0,2)];

echo <<<EOD
A君の引いたクジ{$Akun}<br>
B君の引いたクジ{$Bkun}<br>
C君の引いたクジ{$Ckun}
EOD;

当然だが、これは間違いである。
上記は「全員が引くたびにクジを戻している」のと同じ状態。つまり毎回当たりも外れもある。
これでは全員が白の可能性も、全員が赤の可能性も出てきてしまう為、掃除当番を巡って喧嘩になってしまう。

こういう時に利用されるのが、shuffle関数。

<?php
$kuji = array('赤','白','白');	//クジが三つ入った箱
shuffle($kuji);			//箱をシャカシャカ揺らす

//一人ずつ順番にクジを引く
$Akun = array_shift($kuji);
$Bkun = array_shift($kuji);
$Ckun = array_shift($kuji);

//結果、赤は誰か一人にしか引かれなくなる
echo <<<EOD
A君の引いたクジ{$Akun}<br>
B君の引いたクジ{$Bkun}<br>
C君の引いたクジ{$Ckun}
EOD;
?>

同じランダムでも、「順番に引く」「一つずつ減る」という結果を出したい場合は、このようにshuffleを用いると良い。
組み合わせ次第で様々なゲームが作れるし、場合によってはシステムにも応用できる。

PHPで作るゲームの注意点

rand、shuffleなどを上手く使えばPHPで簡単なゲーム的なものは作れるようになる。
しかしPHPは複雑なゲーム制作には向いていない
PHPはサーバーサイドスクリプトなので、データの切り替え時にサーバーにアクセス、つまり一度画面を読み込みなおさなければならない。
その関係上、画面内での複雑な動きはできないし、データもSESSIONなどで引き渡さないと、逐一リセットされてしまう。
より直感的に動くブラウザゲームは、クリックやキーボードでイベントを起こせるJavaScript等の方が向いている。

とはいえ、フォームと連携してボタンを押す→結果が出るといった動作はPHPの基本だし、そう言った動きであれば凝り方次第で色んなことが出来るので、色々と遊んでみてほしい。

おまけ。シャッフルを使った簡易ブラックジャック~自己完結版~

絵札の置き換えを何度もやるのが面倒だったので、どうにかできないか考えてみました。
元の物より行数は減りますが、やる事は複雑になります。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>PHPで簡単なブラックジャック</title>
</head>

<body>
<?php 
	$value = array();	//後で使う配列の初期値設定
	
	$card = array('A',2,3,4,5,6,7,8,9,10,'J','Q','K');	//表示用の配列を用意
	
	shuffle($card);	//配列の中身をシャッフルシャッフル
	
	//cardとは別に、計算用の値の配列を用意
	for($i = 0; $i < count($card); $i++){	//配列の長さだけ繰り返し
		if($card[$i] == 'A'){		//もしi番目のカードが「A」なら
			$value[$i] = 11;	//i番目の値は11に
		}elseif($card[$i] == 'J' || $card[$i] == 'Q' || $card[$i] == 'K'){	//もしi番目のカードが「J」「Q」「K」のいずれかなら
			$value[$i] = 10;	//i番目の値は10に
		}else{				//それ以外なら
			$value[$i] = $card[$i];	//そのままの値を代入
		}
	}
	
	//配列なので、foreachでも同じことができます(上のfor文かこちらのいずれかを使用)
	/*
	foreach ($card as $k => $v){
		if($v == 'A'){ 
			$value[$k] = 11; 
		}elseif($v == 'J' || $v == 'Q' || $v == 'K'){ 
			$value[$k] =10;
		}
		else {
			$value[$k] = $v;
		}
	}*/
	
	
	//2つの配列の中身を確認(print_rは配列の中身を全て表示する確認用関数)	
	print_r($card);	
	echo "<br>";
	print_r($value);
	
	
	//プレイヤーA 1枚目
	$A_draw1 = array_shift($card);		//表示カード
	$A_value1 = array_shift($value);	//計算用数値
	
	//プレイヤーB 1枚目
	$B_draw1 = array_shift($card);		//表示カード
	$B_value1 = array_shift($value);	///計算用数値
	
	
	//プレイヤーA 2枚目
	$A_draw2 = array_shift($card);		//表示カード
	$A_value2 = array_shift($value);	///計算用数値
	
	//プレイヤーB 2枚目
	$B_draw2 = array_shift($card);		//表示カード
	$B_value2 = array_shift($value);	//計算用数値
	
	$A_result = $A_value1 + $A_value2;	//Aの結果(Aの1枚目の値 + Aの2枚目の値)
	$B_result = $B_value1 + $B_value2;	//Bの結果(Bの1枚目の値 + Bの2枚目の値)

	//結果を変数に格納
	if($A_result == $B_result){			//AとBが同値なら
		$last_result = '引き分け';		//引き分け
	}elseif($A_result > $B_result){		//AがBより大きければ
		$last_result = 'Aの勝ち';		//Aの勝ち
	}else{								//それ以外(BがAより大きければ)
		$last_result = 'Bの勝ち';		//Bの勝ち
	}
?>

<!--折角なのでテーブルで表示-->
<hr>

<h4>結果</h4>
<table>
	<tr>
		<th>プレイヤー</th>
		<th>1枚目</th>
		<th>2枚目</th>
		<th>合計</th>
	</tr>
	
	<tr>
		<th>Aさん</th>
		<td><?php echo $A_draw1; //Aの手札1 ?></td>
		<td><?php echo $A_draw2; //Aの手札2 ?></td>
		<td><?php echo $A_result;//Aの手札合計値 ?></td>
	</tr>
	
	<tr>
		<th>Bさん</th>
		<td><?php echo $B_draw1; //Bの手札1 ?></td>
		<td><?php echo $B_draw2; //Bの手札2 ?></td>
		<td><?php echo $B_result; //Aの手札合計値 ?></td>
	</tr>
	
	<tr>
		<td colspan="3">
			<?php echo $last_result; //勝敗表示 ?>
		</td>
	</tr>
</table>
</body>
</html>

上記では「表示用の配列」とは別に、「計算用の配列」を用意する事で解決しています。
「こんなやりかたもあるんだー」という参考程度に。コピペすれば使えますが、興味のある方は中身を「読んで」みてください。
「ユーザー定義関数」を使った他の方法もあるのですが、それだけで一講義必要なので、今回は割愛します。

2月29日(月) Webサイト制作演習①

PHPステップアップ①~ヒアドキュメント~

PHP Labo ヒアドキュメント
PHPの中で長文のHTMLを出力したい時に使われる。
何度もechoするより効率がいい上、変数も自動で出力してくれるため、使い勝手が良い。

終了時の文字列を「<<<」付きで宣言し、もう一度その文字列が宣言されるまでの間に書かれた文章が全て出力される。指定文字列は、アルファベットで始まっていればなんでも良いが、「EOM(End Of Messageの略)」や「EOD(End Of Document)」、「EOF(END OF File)」等が慣例的に使われることが多い。
間で使われる変数も出力する。また、HTMLタグも出力できる。

$name = "鈴木";
//ここ↓で宣言した文字を
echo <<<EOM 
{$name}様こんにちは。<br>
ようこそいらっしゃいました。<br>
よろしくお願いします。
EOM; //←もう一回使うまでの間を出力

文章がそのまま出力されるので、重宝する。

また、変数に代入する事も出来る。

$name = "鈴木";

$message = <<<EOM
{$name}様こんにちは。<br>
ようこそいらっしゃいました。<br>
よろしくお願いします。
EOM;

echo $message;

メール送信のメッセージなど、関数の括弧内に入れなければいけない時に重宝する。
また、変数を使う時にはそのままでもよいが、ヒアドキュメント内で省略される{飾り括弧}で囲ってあげるとより分かりやすい。

ただし注意点がある。

	$name = "鈴木";

		echo <<<EOM
			{$name}様こんにちは。<br>
			ようこそいらっしゃいました。<br>
			よろしくお願いします。
		EOM;//これだけでエラーになる

上記の様に、EOM;の閉じの前にインデントなどでタブやスペースなどが入っているとエラーが出てしまう。また、文章もtab入りで表示されてしまうので、インデント抜きで使ってあげよう。

サイト制作ステップアップ①~仕様書~

仕事でWebサイトを制作する時には、まず仕様書を作ってあげる必要がある。
仕様とは、「何を作るのか」をまとめたもの。
もちろん作るものはWebサイトなのだが、「どんな」サイトを作るのか、大枠を作っておく必要がある。
基本的にはディレクターが、クライアントとの対話「ヒアリング」を行って、「何を作るのか」を明確にしていき、デザイナー・コーダー・プログラマーの手によってイメージを可視化していく。

  • サイトの目的・コンセプト(最重要)
  • 目的を果たす為に必要なページ・コンテンツ(利用規約・ガイドラインなど)
  • 副次的に必要になるコンテンツ
  • 使用ソフト等の検討(WordPressなどのCMSを使うのかなど)
  • 何ページ必要になるのか(コンテンツをどれくらいのページに分けるのか。どこにリンクを飛ばすのか。サイトマップ)
  • デザインイメージ
  • ターゲット層
  • 必要なプログラム(メールフォームなど)
  • サイトタイトル・キャッチコピー含むテキスト・画像など(だれが・どうやって用意するのか)
  • etc……

考える事はいくらでも出てくるが、基本的には一番目に挙げた「サイトの目的とコンセプト」に沿い、他の項を埋めていく。クライアントだけでなく、専門のチームメンバーに「必要な情報」を聞き、クライアントに対応してもらうことで、後々困る事は少なくなる。
また、「ヒアリング」といっても聞くだけではなく、「サイトの目的やコンセプト」からブレていないか、予算内・納期内に可能かなどを常に意識し、軌道修正を図る。
面倒そうであっても、フィックスするまで何度でもヒアリングを重ね、「作るもの」を明確にした上で作業に入っていく事が、結果的に完成までの一番の近道になる。
仕様書作りはディレクターの仕事ではあるものの、デザイナーを中心に、制作サイドもコンセプトをよく理解したうえで制作していくとより作りやすい。
コンセプトを意識した“伝わる”Webサイトづくり
仕様書作りに直接関係する記事ではありませんが、現職のWebディレクターさんがコンセプトの大切さをタイムリーに説いくれていたので紹介です

2月15日(月) CMS演習① 講義内容

メールを送信する為の関数「mb_send_mail」

フォームの最も一般的な用途として挙げられるのが、メールフォームである。
メールは一般にサーバーを経由するので、サーバーサイドスクリプトであるphpの守備範囲になる。

データの受け渡しはデータベースへの登録とほとんど変わらないので割愛する。
最終的に、mb_send_mail関数を使用することでメール送信が出来るようになる。

メールを送る為には最低限の情報として、

  • 送信先のメールアドレス
  • 件名
  • 本文
  • 送信元の情報

が必要になる(送信先以外は空でも送信できるが、基本は入れると思われる)。
以下の様に記述する。変数名は何のデータか分かりやすいものが望ましい。

//必要情報を変数に格納(より分かりやすくするため)
$to = "送信先のメールアドレス";
$subject = "件名";
$message = "本文";
$from = "From: 送信元のアドレス";

//文字コードの指定。mb_send_mail実行以前に指定する必要がある
mb_language('ja');
mb_internal_encoding('UTF-8');

$mail_send = mb_send_mail($to,$subject,$message,$from);

if(mail_send){
    echo "送信成功!";
}else{
    echo "送信できませんでした";
}

※成功メッセージが出ても、xamppからはそのままではメールは送れません。
こちらの設定を参照するか、実際にサーバーにあげた上で動作確認をしてください。

メール送信時に知っておくと便利な技術

mb_encode_mimeheader

送信元「From」は少しだけ癖があり、実はここだけエンコード形式が違う。単純にメールアドレス等半角文字だけ利用するだけなら問題ないのだが、この中で送信者の名前などの日本語をそのまま入れてしまうと文字化けしてしまう。
ここだけ特殊なエンコード処理をする必要があるので、日本語部分に「mb_encode_mimeheader」関数を利用してあげると治る。

$from = "From:" . mb_encode_mimeheader($name) . "<xxxxx@xxxxx>\n";

参考:mb_send_mail関数によるメールの文字化け(本文、送信者、CC)

ヒアドキュメント

上記サンプルコードでは、本文部分にそのまま文字列を当て込む形式になっている。しかし実際にはかなり長い文章の任意の場所に変数や改行を入れ込む必要があり、そのまま打ち込むのは非常に面倒なことになる。

こういった、長文を出力する際に重宝するのがヒアドキュメントと呼ばれる手法である。

$message =
<<<EOM
{$name}様
この度は、弊社サイトにお問い合わせをいただき、誠にありがとうございます。
無事登録が完了しました。

このメールは自動返信メールです。
後日、担当者よりご連絡をさせて頂きます。
EOM;

「>>>と特定の文字列」、「特定の文字列とセミコロン」の間に、改行ありで好きなメッセージを書くことが出来る。ついでに飾り括弧を使うと変数も書ける。tabキーも反映されるためインデント出来ないのが偶に傷だが、長文を入れる時は非常に楽な技術になっている。
また、メール本文に関してはヒアドキュメント内で改行しておけば、きちんと反映されるので非常に楽。

参考:PHP入門|ヒアドキュメント

CMS

CMS(Contents Management System)とは、Webにおけるテキストや画像、レイアウトなどのコンテンツを管理するシステムのこと。
例えば、ブログの記事について考える。
ブログの一つ一つの記事はもちろんそれぞれ内容が異なるが、大きく分類すると共通のパーツに分類できる。

  • 記事のURL
  • 記事タイトル
  • 投稿日時
  • 本文

他にもツールによって、カテゴリー機能やアイキャッチ画像、作成者など、様々な情報が負荷される場合があるが、それらを踏まえても、記事単位の情報はある程度分類できる事が分かる。
また、各情報が出力される位置も、基本的には常に変化がない。こういった基本構造を、ページのテンプレートと呼ぶ。

template

上記のようなテンプレートがあり、記事ページを幾つも制作する場合、極端な事を言えばタイトル・本文などの一部の情報が切り替わるだけで事足りる。

多くのCMSでは、管理画面のフォームから変化する部分(この場合記事タイトルや本文)を、データベースに格納。表示させたい場所にデータを引っ張ってくるという手法を取っている。

WordPress

世界で一番のシェアを誇る、CMSの最大手で、2015年11月時点で全Webサイトの25%を占めるという怪物ツール。元々はただのブログツールだったが、日に日に成長を重ね、その汎用性の高さと対応の速さにより、現在の地位を確保した。日本に置いては企業サイトなどでも幅広く採用されており、現在のWeb制作に欠かせないツールとなりつつある。
完全なオープンソースのCMSで、基本的に完全無料(後日講義するテーマやプラグインには有料のものあります)、全てphpで組まれているのが特徴。
魅力はなんといっても情報の多さ。jQueryなどもそうだが、シェアの大きさはユーザーの多さとイコールであり、それは情報量にも直結する。その意味で、最も学び易いCMSともいえる。

ダウンロードとインストール

(今回はローカル下での設定です)
まずはWordPress公式サイトの右側からzipファイルをダウンロードし、展開する。
上述のとおり全てphpで組まれている為、ローカルで確認する場合はxampp、htdocs下に展開したファイルを置く必要がある。
Apacheと、データベースを利用する為MySQLを起動した後、「localhost/day/wordpress」のように、localhost以下の該当アドレスにアクセスすると、インストール画面に移動する。

  1. 初期設定以前にwordpressのトップを開こうとすると、この画面に跳ぶ
    wordpress01
    「さぁ、はじめましょう!」をクリック。
  2. 先にWordPressで使用するデータベースを作成しておく。
    今回はそのまま「wordpress」とした。
    wordpress03
    テーブルは制作する必要なし。
  3. 必要情報を入れていく。
    wordpress02
    データベース名は先に作成したものと同じ名前。
    xamppの場合は
    ユーザー名:root
    パスワード:空欄
    ホスト:localhost
    でOK。
    実際のサーバーであればマイページなどに記載された専用の情報を入力する必要がある(ただし最近は自動インストールサービスも多いので、設定するかどうかは場合に寄ります。)。
    「接頭辞」は、データベース内に置かれるテーブル名の先頭につく名前の事(ローカル下ではデフォルトの「wp_」で構いませんが、本番サーバーではセキュリティ対策の一環として、別の物に変換する事が多いです)。
    インデックスは検索に引っ掛けるかどうか。今回はローカルなので、いずれにしても検索にはかからない。
  4. 全て通れば、この画面に移行する。(失敗したときは設定した名前と同じ名前のデータベースが作られているか、パスワードに「パスワード」の文字列が残っていないか等を確認する)
    wordpress04
    インストール実行してみよう。
  5. 今度はサイト自体の必要情報の設定が求められる。
    wordpress05

    サイトのタイトル WordPressで作るサイト自体のタイトル。任意の名前を付けられる。日本語可。後でダッシュボードから変更可能
    ユーザー名 ダッシュボードへのログインに必要なユーザー名。基本的に後からの変更不可(データベースから直接変更はやろうと思えば出来ますが、滅多なことではやらないほうが無難)。忘れない様に
    パスワード ダッシュボードへのログインに必要なパスワード。設定基準はやや厳しめになっており、脆弱なパスワードの場合は下のボックスへのチェックが必要になる。基本、厳しくしておくに越した事は無い。こちらは後から変更可。忘れない様に
    メールアドレス メールアドレスを設定。通知が届くので、ちゃんと受信できるアドレスを設定した方が良い。こちらも後から変更可能。
  6. ここまでくれば、後はログインするだけになる。
    wordpress06
    先の画面で入力したIDとパスワードを入力すれば、晴れてダッシュボードが表示される。

    因みに次回以降、ログアウトしてしまった時は、設定したサイトのURL末尾に「/wp-admin/」ないし「/wp-login/」を付ければ、この画面にジャンプする。

WrodPress用語集

ダッシュボード
WordPressの管理画面の通称。ログインしていなければ入れないようになっている。
ここでは各種設定や、記事の管理や投稿、プラグインの管理など、様々なことが出来る。
デフォルトではログイン時にサイト上部にバーが出るようになっていて、左上から実際のサイトとダッシュボードを行き来できる。
テーマ
WordPressにおけるテンプレートの通称
テーマを変更するだけでページ自体の見た目がガラリと変わる。変更や追加はダッシュボードの外観→テーマから。
WordPressでは、世界中のユーザーが無料・有償含めて星の数ほどのテーマが提供されている。極端な話、完全に気に入ったテーマがあれば、HTMLやCSSすらほぼ触ることなくサイトが出来上がる。

もちろん仕事で作るサイトは大抵の場合オーダーメイドになるし、既存テーマであっても要望に応じて修正する必要性がある為、テーマ作成・ないしカスタマイズの技術が求められる。
表面的な部分であればダッシュボードからの変更やCSS等の知識だけでも何とかなるが、細かい修正をしていく場合はPHPの知識が必要になってくる

また余談だが、今回デフォルトで選択されているテーマは「Twenty Sixteen」という名称。WordPressの公式は毎年オリジナルテーマをデフォルトテーマとして公開しているので、できたてほやほやのデフォルトテーマという事になる。
因みに、このブログは二年前のデフォルトテンプレート、「Twenty Fourteen」のカスタマイズで作ったものです。

テーマのカスタマイズ
ダッシュボード→外観→カスタマイズから、テーマの簡単なカスタマイズが出来る。
ただしどの部分を変更できるかはテーマに依存しており、選択したテーマによってカスタマイズ性は大きく変わる。
ここで変更できない部分は、直接テーマファイルをいじるしかないので、より技量が必要になる。
投稿
WordPressの基礎機能の一つ。元々のブログツールの根幹機能で、記事を投稿できるページになる。
ブログ以外にも、日々追加していく部分(お知らせ、ECサイトにおける商品など)を設定する事も出来る。
また、よくブログにある「カテゴリー」「タグ」といった機能もデフォルトで利用可能な為、そのままでも結構汎用性が高い。
固定ページ
記事毎に内容の異なる投稿とは別に、一度作られてしまえば変更の必要のない、静的なページを「固定ページ」と呼ぶ。
通常のブログとは違い、「投稿」と「固定ページ」を組み合わせる事で、様々なタイプのページを制作できる。
プラグイン
WordPressの拡張機能。
こちらもテーマと同じく、有志が日々公開しており、機能はピンからキリまで本当に多岐に渡る。
何が出来るかと言えば、大抵の事は出来ると答えるしかない。
今後便利なプラグインをいくつか紹介していきます。
ウィジェット
外観→ウィジェットから設定可能。
ほとんどのテーマには「ウィジェット」の表示エリアが設定されており、カレンダーや特定のテキストなど、好きな機能を追加することが出来る。また、ウィジェットはは上述のプラグインによって増える事もある。
テーマごとに表示場所は固定の為、任意の場所に表示させるためには適宜カスタマイズが必要になる。

WordPressテーマの基本構成

WordPressでは、幾つかのテンプレートファイルを組み合わせる事で一つのテーマを形成している。
共通部分を分離した「header.php」や「footer.php」、といったパーツを作り、各ファイルで読み込むという形式を取っている。
こうした、「共通部分を別で作り組み合わせる」という作り方が、CMSの基本になっている。

2月12日(金) PHPプログラミング演習⑨ 講義内容

編集中……後ほど追記・修正します

SQL文

先日も記述した通り、データベースへの命令はSQL文で行われる。
PHPとの連携時も同様で、データベースの変更をしたい時にはきちんとSQL文を記述しなければならない。記述形式は、今までのプログラムとはまた別の特徴あるものになっている。
挿入・選択(検索)・更新・削除など、大きく分けて幾つかの機能があり、それぞれ「どのテーブルのどのカラムのどのデータに対して行うか」を記述するのが基本形式。
phpMyAdminの「挿入」タブや「検索」タブ、データの削除などを行うと、実行した命令に伴ってSQL文が表示されるので、参考にすると良い。

INSERT
新規挿入。

INSERT INTO データベース名 テーブル名 (カラム名1,カラム名2,……) VALUES ("挿入データ1","挿入データ2"……)

複数のデータを挿入する場合は、カンマで区切っていく。データ数は指定したカラム数と同じである必要がある。
指定したデータベース名やテーブル名やカラム名が存在しない場合は実行されない。

SELECT
データを選択・閲覧できる。性質上、データの検索もこの命令で行う。

SELECT * FROM テーブル名

あるテーブルの全てのデータを参照する場合は、*を用いる。

SELECT * FROM テーブル名 WHERE カラム名 = "データ"

検索する場合は、上記の様にWHEREを設定する。
「テーブル内にある、データの一致するもの」を指定できる。
数値であれば以上以下を調べる比較演算子や、最大値最小値の検索も可能。
もちろん、複数の検索にも対応しており、一致条件も色々指定できる。
「検索」タブで色々と試してみると良い。

UPDATE
UPDATE データベース名 テーブル名 SET カラム名 = '新しいデータ' WHERE テーブル名 プライマリーカラム = データ名

「どの行の」というWHERE以降の命令が必要になる。プライマリーキーを設定していれば、それで指定が出来るので楽。