ここではコース一覧表示処理を実装します。

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


ファイル一覧

処理 ファイル 概要
コース一覧表示処理 courses/index.php コース一覧画面を表示する

画面仕様

コース一覧画面(index.php


index.php の実装

概要

  • コース一覧画面を表示する

処理記述

  • PDOインスタンスを生成する

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

    • select 
      co.id, co.title, co.learning_time, ca.title category_title 
      from courses co left join categories ca 
      on co.category_id = ca.id 
      order by co.id
  • 定義した select 文のプリペアドステートメントを作成する

  • プリペアドステートメントを実行する

  • courses レコードの一覧をフェッチする

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

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

    • coursesレコードの一覧を出力する

index.php

<?php
// TODO
?>
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>PHP DB</title>
</head>
<body>
  <h3>Courses - Index</h3>
  <hr>
  <table border="1">
    <tr>
      <th>ID</th>
      <th>TITLE</th>
      <th>L-TIME</th>
      <th>CATEGORY</th>
    </tr>
    <?php foreach ($courses as $course) { ?>
    <tr>
      <td><?= htmlspecialchars($course["id"]) ?></td>
      <td><?= htmlspecialchars($course["title"]) ?></td>
      <td><?= htmlspecialchars($course["learning_time"]) ?></td>
      <td><?= htmlspecialchars($course["category_title"]) ?></td>
    </tr>      
    <?php } ?>
  </table>
</body>
</html>

動作確認

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

$ php -S localhost:8080

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

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

上記のようにコース一覧画面が表示されることを確認します。