PHP レッスン — レッスン 4 — 画像の処理、GD2 ライブラリ
前のレッスンで DB へのクエリの書き方を学んだので、今回はクエリの書き方にはあまり注目せず、単にクエリを書く練習をします。また、クエリの記述を PHP の他の機能の学習と組み合わせていきます。まずは画像の処理から始めましょう。前のレッスンの 1 つですでにファイルをアップロードし、アップロードされたファイル用の Files テーブルもあります。同じテーブルに画像をアップロードしましょう。ただしまず、素材作成フォームに写真アップロード用のフィールドを追加する必要があります。
PHP レッスン — レッスン 3.6 — MySQL DB の操作。JOIN 演算子の種類。
MySQL では、JOIN による抽出をさまざまな方法で行えます。これらすべての種類のクエリを取り上げていきます。JOIN を伴うすべてのクエリのリストです:
- INNER JOIN
- LEFT JOIN
- 右のテーブルとの交差なしの LEFT JOIN
- RIGHT JOIN
- 左のテーブルとの交差なしの RIGHT JOIN
- FULL OUTER
- 左または右のテーブルが空の FULL OUTER
これらの JOIN の種類の図解です:

PHP レッスン — レッスン 3.5 — MySQL DB の操作。JOIN 演算子。サーバーへのファイルアップロード。
このレッスンを書き始める前に、JOIN 演算子を使ったクエリをどう教えるのが良いか長く考えました。というのも、JOIN 演算子は複数のテーブルから同時に抽出するために必要だからです。もう 1 つテーブルが必要なので、それを作りましょう。このレッスンでフォームを通じてアップロードするファイル用のテーブルを作ることを提案します。DB の操作とフォームの操作という 2 つの異なる方向のレッスンになります。
では、ファイルアップロード用のフィールドの追加から始めましょう。フォームがファイルをアップロードできるようにするには、そのパラメーターにフォームの種類を追加する必要があります:
$content .= '<form action="' . $_SERVER['PHP_SELF'] . '" method="post" enctype="multipart/form-data">';
こうして、enctype パラメーターを通じて、このフォームでファイルをアップロードすることをブラウザに知らせます。フォームの準備ができたので、ファイルアップロードのフィールドを追加しましょう:
PHP レッスン — レッスン 3.4 — MySQL DB の操作。DELETE 削除クエリ。
前のレッスンでは、管理クラス simpleCMS に新しいメソッドを追加する方法を学びました。では、レコードを削除するもう 1 つのメソッド delete() を追加しましょう。
メソッドはいつものように追加します:
public function delete($mid){
}
ご覧のとおり、パラメーター $mid、つまり私たちのレコードの id を渡します。前のレッスンを思い出すと、私たちはパラメーターを get リクエストから直接渡す別の方法を使うことにしました。今回は、別の方法でパラメーターを渡してみます。
さて、メソッドを定義したので、index.php ファイルにパスの処理を書きましょう:
PHP レッスン — レッスン 3.3 — MySQL DB の操作。UPDATE によるデータの更新。
私たちはすでに SELECT、INSERT INTO といった MySQL の演算子に触れました。今度は、DB にすでに入力されたデータをどう更新するか学ぶ時です。そのために SQL の UPDATE 演算子を使います。ただしまず、index.php ファイルを変更して、もう 1 つのパスの処理を追加しましょう。次のコードを見つけてください:
if( $_GET['admin'] == 1 ){ // URL に admin 変数があれば
print $obj->display_admin(); // 変数があれば、フォームを表示する
}else{
print $obj->display_public(); // 変数がなければ、メッセージを表示する
}
そして、次のコードに置き換えてください:
PHP レッスン — レッスン 3.2 — MySQL DB の操作。INSERT INTO によるデータの挿入。SELECT によるデータの抽出
前のレッスンでは、サイト用のテーブルを作りました。このレッスンでは、テーブルを改良し、いよいよ DB を扱い始めます。そこにデータを入力し、テーブルからそのデータを取り出します。難しいことは特にないと思うので、始めましょう。
まず、messages テーブルを改良することを提案します。今はデータ用のフィールドがありますが、レコードに番号を付けるためのフィールドがもう 1 つ必要です。Drupal の DB を開くと、node テーブルには nid フィールドがあり、それでノードに番号を付けています。私たちの messages テーブルでも同じようにする必要があります。
phpMyAdmin(Denwer では http://localhost/tools/phpmyadmin)に入り、テーブルを編集しましょう。図のように、テーブルの先頭にもう 1 つ列を追加します:
PHP レッスン — レッスン 3.1 — MySQL DB の操作。テーブルの作成。
前のレッスンでは、データベースとの接続を作りました。このレッスンでは、将来のサイト用のテーブルを作ります。まず、必要な DB の名前を simpleCMS クラスに追加しましょう:
class simpleCMS { // 管理クラス
public $host = 'localhost'; // DB を扱うための変数
public $username = 'root';
public $password = '';
public $db = 'testDB';
次に、この DB を MySQL サーバー上に作成する必要があります。あなたも Denwer を使っているなら、そのために phpMyAdmin があります。Denwer に含まれています。このリンクから phpMyAdmin に入り、新しい DB を作成してください:
PHP レッスン — レッスン 3 — MySQL DB の操作。
3 つ目のレッスンをいきなり MySQL DB の操作から始めるのは早すぎると思うかもしれません。しかし、そうではないと信じてください。PHP を Web プログラミングの言語として学びながら DB の操作を学ばないのは、インターネットのないコンピューターを持つのと同じです。そのようなコンピューターで作業はできますが、情報をどこからも得られません。ですから、歯を食いしばって、たとえ SQL 言語について何も知らなくても、DB への SQL クエリを書き始めましょう。
SQL(Structured Query Language —「構造化問い合わせ言語」) — 表形式のデータベースでデータの作成・変更・管理に用いられる汎用のコンピューター言語です。SQL はテーブル内のレコードの計算に基づいています。
PHP レッスン — レッスン 2 — ファイルの操作:開く、書き込む、読み込む。
前のレッスンでは、ゲストブック、ブログ、あるいはチャットの骨組みを作りました。あとは機能を追加するだけです。このレッスンでは、レコードをファイルに記録し、ファイルからレコードを出力します。
PHP にはファイルを扱う関数が多くあります。そのいくつかを取り上げます。おそらくあなたのサイトはデータをファイルではなくデータベースに記録するでしょう(これは確信しています)。ですから、要点を理解できるよう、そのうちのいくつかだけを取り上げます。データベースの操作は後で扱います。
では、前のレッスンで作ったファイルがなければ、1 つ前のレッスンに戻ってそれらのファイルをダウンロードしてください。
レコード追加のフォームに移りましょう:
/index.php?admin=1
このフォームからレコードを追加します。これらのレコードを処理するには、index.php ページ(このページにフォームからデータが送られます)で、$_POST 変数に値があるか確認する必要があります。確認はとても簡単です:
PHP レッスン — レッスン 1 — フォームの操作
日常生活では、私たちはテレビ、ラジオ、インターネット、直接の会話を通じて情報を得ます。サイトもユーザーから情報を得ますが、それは特別な形、すなわちフォームを通じて行います。フォームは、アンケート調査の用紙や、何かの公的機関に申請する際に記入する用紙と比べられます。フォームの要素のセットは限られていますが、フォームは、サイトの動作に必要なすべての情報をユーザーから受け取れるようにします。
レッスンをより実り多いものにするため、フォーム作成に関する HTML のレッスンを読んでおくとよいでしょう。
最初のレッスンを始める前に、私たちのアプリケーションの骨組み、すなわちサイトの動作を管理するクラスを作りましょう。
class フォルダを作り、その中に、サイト管理クラスを含む simpleCMS.php ファイルを置きます。また、この管理を起動する index.php ファイルも作ります。さらに、メッセージ用の空のフォルダと、スタイルファイル style.css も作ります。次のようなファイルとフォルダになります:
class/simpleCMS.php
messages/
index.php
style.css