それではEラーニング管理アプリケーションの概要について解説します。Eラーニング管理アプリケーションはEラーニングシステムで提供するカテゴリー情報やコース情報を管理します。もっと具体的に言えばMySQLデータベースにある categories テーブルや courses テーブルにあるレコードをWebブラウザ上でメンテナンスするアプリケーションを開発します。

MySQLデータベース上には categories テーブル、 courses テーブル2つのテーブルが存在するので、まずはシンプルな categories テーブルを扱う機能から開発することにします。

Eラーニング管理アプリケーションのカテゴリー管理機能では以下の5つの処理を実装します。

  • カテゴリー一覧表示処理
  • カテゴリー作成処理
  • カテゴリー詳細表示処理
  • カテゴリー更新処理
  • カテゴリー削除処理

これらの処理を順に開発していきます。


画面一覧(完成時)

まずはこれから作成するアプリケーションの全体像を確認しておきましょう。カテゴリー管理機能は以下の5つの画面を提供します。

  • カテゴリー一覧画面( index.php
  • カテゴリー作成画面( create.php
  • カテゴリー詳細画面( show.php
  • カテゴリー更新画面( edit.php
  • エラー画面( error.php

また各画面間のつながりは以下とおりです。

これから見ていくように各画面のボタンやリンクなどを通じて画面を移動します。またプログラムの中で、入力チェックに違反した場合や、データベースに接続できないなどの例外が発生した場合はエラー画面を表示するものとします。

次にこれから作成する画面イメージを確認しておきましょう。

カテゴリー一覧画面( index.php

カテゴリー一覧画面では、categoeris テーブルのレコード一覧を表示します。

カテゴリー作成画面( create.php

カテゴリー作成画面ではIDとTITLEを入力して新規レコードを作成します。

カテゴリー詳細画面( show.php

カテゴリー詳細画面ではカテゴリー一覧画面で選択したレコードを表示します。EDITリンクやDESTROYボタンでレコードの更新や削除が可能です。

カテゴリー更新画面( edit.php

カテゴリー更新画面では既存のレコードを編集して更新できます。

エラー画面( error.php

エラー画面はアプリケーション内で例外が発生した場合に表示します。


ファイル一覧

カテゴリー管理機能は以下の8つのファイルで構成されます。

処理 ファイル 概要
カテゴリー一覧表示処理 index.php カテゴリー一覧画面を表示する
カテゴリー作成処理 create.php カテゴリー作成画面を表示する
カテゴリー作成処理 store.php カテゴリーレコードを作成する
カテゴリー詳細表示処理 show.php カテゴリー詳細画面を表示する
カテゴリー更新処理 edit.php カテゴリー更新画面を表示する
カテゴリー更新処理 update.php カテゴリーレコードを更新する
カテゴリー削除処理 destroy.php カテゴリーレコードを削除する
共通処理 error.php エラー画面を表示する

これらのファイルをこれから順に作成します。


フォルダ構成

開発フォルダは任意のフォルダ ( WORK_DIR )とします。またカテゴリー管理用のプログラムを配置する categories フォルダを準備します。また本演習においては、PHPのビルトインサーバは開発フォルダ( WORK_DIR )フォルダをドキュメントルートとして起動するようにします。

  • WORK_DIR
    • categories
    • index.php
    • create.php
    • store.php
    • show.php
    • edit.php
    • update.php
    • destroy.php
    • error.php

WORK_DIR は任意の作業フォルダです。現時点では任意のフォルダ(Cloud9 の場合は /home/ec2-user/environment など)を準備して そこにcategories フォルダを作成します。


データベース

これまでと同様に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);