それでは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);