ここではシンプルな お菓子屋さん のWEBシステムの管理者機能を開発します。具体的には次の4つの機能を順に開発していきます。
画面一覧
これから以下の3つの画面を作成してきます。
SWEETS一覧画面

SWEETS作成画面

SWEETS更新画面

課題の準備
Cloud9 の /home/ec2-user/environment フォルダ上に以下のフォルダとファイルを作成します。
sweets_adminappsweets_admin_list.php※課題1 で作成sweets_admin_store.php※課題2 で作成sweets_admin_create.php※課題2 で作成sweets_admin_edit.php※課題3 で作成sweets_admin_update.php※課題3 で作成sweets_admin_destroy.php※課題4 で作成
datasweets.csv
libsfunctions.php
ここでは sweets_admin フォルダを作成して、その内部に app、 data、 libs 3つのフォルダを作成します。

以降は
sweets.csvファイルfunctions.phpファイルの2つを準備します。
sweets.csv
sweets.csv ファイルはお菓子の一覧情報を管理します。1件のお菓子の情報は次の3つのデータで構成されます。
- ID(id)
- 名前(name)
- 価格(price)
1,Biscuit,200
2,Candy,100
3,Chocolate,300
上記の内容をコピーして
sweets.csvファイルをdataフォルダに作成してください。また最終行に改行があるように保存してください。以下のスクリーンショットのように4行目が表示されるようにします。

functions.php
functions.php ファイルは再利用可能な関数だけを定義したファイルです。以下の4つの関数を提供します。
| 関数名 | 処理内容 |
|---|---|
get_sweets |
sweets.csv ファイルを読み込んでお菓子の一覧情報を取得する |
get_sweet_by_id |
sweets.csv ファイルを読み込んで、引数に指定したIDに一致するお菓子の情報を取得する |
save_sweets |
引数で指定したお菓子の一覧等情報を sweets.csv ファイルを保存する |
validate_exist_id |
引数で指定したお菓子のIDが sweets.csv ファイル上に存在する場合、true を返す。存在しない場合は false を返す |
<?php
function get_sweets()
{
$fp = fopen("../data/sweets.csv", "r");
$sweets = [];
$line = fgetcsv($fp);
while ($line !== false) {
$sweet = ["id" => $line[0], "name" => $line[1], "price" => $line[2]];
$sweets[] = $sweet;
$line = fgetcsv($fp);
}
fclose($fp);
return $sweets;
}
function get_sweet_by_id($id)
{
$sweets = get_sweets();
foreach ($sweets as $sweet) {
if ($sweet["id"] === $id) {
return $sweet;
}
}
return false;
}
function save_sweets($sweets)
{
$fp = fopen("../data/sweets.csv", "w");
foreach($sweets as $sweet) {
$id = $sweet["id"];
$name = $sweet["name"];
$price = $sweet["price"];
$line = "$id,$name,$price" . PHP_EOL;
fwrite($fp, $line);
}
fclose($fp);
}
function validate_exist_id($id)
{
$sweets = get_sweets();
foreach ($sweets as $sweet) {
if ($sweet["id"] === $id) {
return true;
}
}
return false;
}
上記の内容をコピーして
libsフォルダにfunctions.phpファイルを作成してください。以降はこれらの関数を使って課題を解いてきます。