ここではコース削除処理を実装します。

以下に指示に従ってプログラムを開発してください。


ファイル一覧

処理 ファイル 概要
コース詳細表示処理 courses/show.php コース詳細画面を表示する
コース削除処理 courses/destroy.php コースレコードを削除する

画面仕様

コース詳細画面( show.php

コース削除処理を呼び出す DESTROY ボタンを追加します。

削除対象のレコードの DESTROY ボタンをクリックすると、データベース( courses テーブル)の対象レコードを削除します。それからコース一覧画面を再表示します。


show.php の実装(修正)

概要

  • コース詳細画面を表示する

処理記述(修正箇所のみ抜粋)

  • HTMLを出力する

    • courses レコードを出力する
    • コース更新画面への EDIT リンクを出力する
    • リンク先にクエリパラメータを送信する
    項目名 パラメータ名
    コースID id
    • 入力フォームを出力する
    • destroy.php にPOSTリクエストを送信する
    項目名 type属性 name属性
    コースID hidden id
    • コース作成画面への CREATE リンクを出力する

show.php (修正箇所のみ抜粋)

...省略
<body>
  <h3>Courses - Show</h3>
  <hr>
  ID: <?= htmlspecialchars($course['id']) ?><br>
  TITLE: <?= htmlspecialchars($course['title']) ?><br>
  L-TIME: <?= htmlspecialchars($course['learning_time']) ?><br>
  CATEGORY: <?= htmlspecialchars($course['category_title']) ?><br>
  <a href="edit.php?id=<?= htmlspecialchars($course['id']) ?>">EDIT</a>
  <form action="destroy.php" method="post">
    <input type="hidden" name="id" value="<?= htmlspecialchars($course['id']) ?>">
    <button type="submit">DESTROY</button>
  </form>
  <hr>
  <a href="index.php">BACK</a>
</body>
</html>

destroy.php の実装

概要

  • コースレコードを削除する

処理記述

  • リクエストパラメータを取得し、入力チェックを行う

    項目名 パラメータ名 入力チェック
    コースID id 必須、整数型
    • 【入力チェックに違反した場合】
    • エラーログに入力エラーメッセージを出力する
    • エラー画面にリダイレクトする
    • 処理を終了する
  • PDO インスタンスを生成する

    引数
    DSN "mysql:host=localhost;dbname=eldb;charset=utf8mb4"
    ユーザ名 root
    パスワード admin
    オプション フェッチモード: PDO::FETCH_ASSOC
    エラーレポート: PDO::ERRMODE_EXCEPTION
    エミュレート: false
  • delete 文を定義する

    • delete from courses where id = :id
  • 定義した delete 文のプリペアドステートメントを作成する

  • プリペアドステートメントのプレースホルダに値をバインドする

    プレースホルダ バインドする値 データ型
    :id リクエストパラメータのコースID 整数型
  • プリペアドステートメントを実行する

  • コース一覧画面にリダイレクトする

  • 【例外( PDOException )が発生した場合】

    • エラーログにエラーメッセージを出力する
    • PDOException のエラーメッセージを出力する
    • エラー画面にリダイレクトする

destroy.php

<?php
// TODO

動作確認

コマンドラインからビルトインWebサーバを起動します。

$ php -S localhost:8080

ブラウザから以下のURLにアクセスします。

https://〜.vfs.cloud9.ap-northeast-1.amazonaws.com/courses/index.php

SHOW リンクをクリックして、コース詳細画面へ遷移できることを確認します。

DESTROY ボタンをクリックして、コースレコードが削除できることを確認します。