ここからはコース管理機能の開発にチャレンジします。後の解説に従ってコース管理機能を開発してください。
概要
コース管理機能では以下の5つの処理を実装します。
- コース一覧表示処理
- コース作成処理
- コース詳細表示処理
- コース更新処理
- コース削除処理
これらの処理を順に開発していきます。
画面一覧(完成時)
まずはこれから作成するアプリケーションの全体像を確認しておきましょう。コース管理機能は以下の5つの画面を提供します。
- コース一覧画面(
index.php
) - コース作成画面(
create.php
) - コース詳細画面(
show.php
) - コース更新画面(
edit.php
) - エラー画面(
error.php
)
また各画面間のつながりは以下とおりです。
カテゴリー管理機能と同様に各画面のボタンやリンクなどを通じて画面を移動します。またプログラムの中で、入力チェックに違反した場合や、データベースに接続できないなどの例外が発生した場合はエラー画面を表示するものとします。
次にこれから作成する画面イメージを確認しておきましょう。
コース一覧画面( index.php
)
コース一覧画面では、courses
テーブルのレコード一覧を表示します。ただしカテゴリー名(CATEGORY列)は categories
テーブルの name
列を表示します。
コース作成画面( create.php
)
コース作成画面ではID、TITLE、L-TIME、CATEGORYを入力して新規レコードを作成します。ただしCATEGORYセレクトボックスは categories
テーブルのレコードを表示します。
コース詳細画面( show.php
)
コース詳細画面ではコース一覧画面で選択したレコードを表示します。EDITリンクやDESTROYボタンでレコードの更新や削除が可能です。
コース更新画面( edit.php
)
コース更新画面では既存のレコードを編集して更新できます。コース作成画面と同様にCATEGORYセレクトボックスは categories
テーブルのレコードを表示します。
エラー画面( error.php
)
エラー画面はコース管理機能内で例外等が発生した場合に表示します。
ファイル一覧
以下の8つのファイルを作成します。
処理 | ファイル | 概要 |
---|---|---|
コース一覧表示処理 | index.php |
コース一覧画面を表示する |
コース作成処理 | create.php |
コース作成画面を表示する |
コース作成処理 | store.php |
コースレコードを作成する |
コース詳細表示処理 | show.php |
コース詳細画面を表示する |
コース更新処理 | edit.php |
コース更新画面を表示する |
コース更新処理 | update.php |
コースレコードを更新する |
コース削除処理 | destroy.php |
コースレコードを削除する |
エラー表示処理 | error.php |
エラー画面を表示する |
これらのファイルをこれから順に作成します。
フォルダ構成
開発フォルダは任意のフォルダ ( WORK_DIR
)とします。またコース管理用のプログラムを配置する courses
フォルダを準備します。また本演習においては、PHPのビルトインサーバは開発フォルダ( WORK_DIR
)フォルダをドキュメントルートとして起動するようにします。
- WORK_DIR
- categories
- ...
- courses
- index.php
- create.php
- store.php
- show.php
- edit.php
- update.php
- destroy.php
- error.php
- categories
以前に作成した
categories
管理機能と同じようにcourses
フォルダに配置するようにします。
データベース
これまでと同様にMySQL上に eldb
データベースを準備します。また eldb
データベースには以下の2つのテーブルを準備します。
categories
courses
MariaDB [eldb]> select * from categories;
+----+-------------+
| id | title |
+----+-------------+
| 1 | Programming |
| 2 | Design |
| 3 | Marketing |
+----+-------------+
3 rows in set (0.01 sec)
MariaDB [eldb]> select * from courses;
+----+-----------------+---------------+-------------+
| id | title | learning_time | category_id |
+----+-----------------+---------------+-------------+
| 1 | PHP Basic | 30 | 1 |
| 2 | PHP Database | 50 | 1 |
| 3 | Python Basic | 40 | 1 |
| 4 | Web Design | 50 | 2 |
| 5 | Japan's History | 100 | NULL |
+----+-----------------+---------------+-------------+
5 rows in set (0.01 sec)
データベースの内容は以前と変わりありません。必要に応じて以下のSQLを実行してデータを初期化しておいてください。
(準備)テーブル作成用SQL
drop table if exists categories;
create table categories(
id integer primary key,
title varchar(100)
);
insert into categories (id, title) values (1, 'Programming');
insert into categories (id, title) values (2, 'Design');
insert into categories (id, title) values (3, 'Marketing');
drop table if exists courses;
create table courses(
id integer primary key,
title varchar(100),
learning_time integer,
category_id integer
);
insert into courses (id, title, learning_time, category_id) values (1, 'PHP Basic', 30, 1);
insert into courses (id, title, learning_time, category_id) values (2, 'PHP Database', 50, 1);
insert into courses (id, title, learning_time, category_id) values (3, 'Python Basic', 40, 1);
insert into courses (id, title, learning_time, category_id) values (4, 'Web Design', 50, 2);
insert into courses (id, title, learning_time, category_id) values (5, 'Japan''s History', 100, null);
エラー画面の準備
各処理を実装に着手する前にコース管理機能用のエラー画面を準備しておきましょう。
courses
フォルダの中に error.php
ファイルを作成します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>PHP DB</title>
</head>
<body>
<h3>Courses - Error</h3>
<hr>
<a href="index.php">BACK</a>
</body>
</html>
error.php
ファイルはHTMLの出力のみを定義しています。画面には Courses - Error
というタイトルとコース一覧画面への BACK
リンクを表示します。
動作確認
それではビルトインWebサーバを起動して、ブラウザから実行結果を確認してみましょう。
コマンドラインからビルトインWebサーバを起動します。
$ php -S localhost:8080
それからエラー画面についても確認しておきましょう。ブラウザから以下のURLにアクセスします。
https://〜.vfs.cloud9.ap-northeast-1.amazonaws.com/courses/error.php
上記のようにエラー画面が表示されることを確認します。
ここで作成するエラー画面は、以前に作成したカテゴリー管理機能のエラー画面とほとんど同じです。実際の開発現場では1つのエラー画面を共有することも多いです。