ここではシンプルな お菓子屋さん のWEBシステムの管理者機能を開発します。具体的には次の4つの機能を順に開発していきます。

  1. SWEETS一覧表示機能
  2. SWEETS作成機能
  3. SWEETS更新機能
  4. SWEETS削除機能

画面一覧

これから以下の3つの画面を作成してきます。

SWEETS一覧画面

SWEETS作成画面

SWEETS更新画面


課題の準備

Cloud9 の /home/ec2-user/environment フォルダ上に以下のフォルダとファイルを作成します。

  • sweets_admin
    • app
      • sweets_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 で作成
    • data
      • sweets.csv
    • libs
      • functions.php

ここでは sweets_admin フォルダを作成して、その内部に appdatalibs 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 ファイルを作成してください。以降はこれらの関数を使って課題を解いてきます。