Case Study / PHP

PHP CRUD.

PHPとMySQLで構築したレシピ管理アプリ

PHPのCRUD処理(作成・読取・更新・削除)を学ぶための課題として制作。MySQLと連携したレシピ管理アプリです。サーバーサイドの基礎を実装しました。

Overview

アプリ概要

PHP CRUD App

Style Guide

デザインの構成要素

Concept

シンプルな管理UI

レシピの一覧・詳細・登録・編集・削除の5機能を持つCRUDアプリ。機能性を優先しつつ、ポートフォリオと統一したデザイントークンで見やすいUIを実現しました。

Color Palette

#FFB5BA (Pink)

アクセント・CTAボタン。

#AEE2FF (Blue)

詳細リンク・情報強調色。

#1A1A1A

テキスト・ヘッダー背景。

Tech Stack

PHP 8

サーバーサイド処理。PDOによるDB接続とCRUD操作を実装。

MySQL

レシピデータの永続化。テーブル設計とSQL文の習得。

Key Points

こだわりポイント

table_rows

完全なCRUDフロー

Create・Read・Update・Deleteの全操作をPHPで実装。PDOを使用したプリペアドステートメントでSQLインジェクション対策も施しています。

security

入力検証とセキュリティ

フォーム送信時のサーバーサイドバリデーション、htmlspecialcharsによるXSS対策、削除時の確認ダイアログなど、基本的なセキュリティ実装を行いました。

Learnings

実装時の学び

課題内容

  • storage
    データベース設計

    recipesテーブルの設計。料理名・カテゴリ・予算・難易度・調理時間・材料・手順などのカラム定義とデータ型の選択を行いました。

  • code
    CRUD実装

    index.php(一覧)・detail.php(詳細)・form.html(登録フォーム)・add.php(INSERT)・edit.php(編集)・update.php(UPDATE)・delete.php(DELETE)の7ファイルで構成。

  • verified
    共通パーツ化

    ヘッダー・フッターを_head.php・_foot.phpとして分離し、各ページでinclude。DRY原則を意識した構成にしました。

技術的アプローチ

Learning 01

PDOによるDB接続

PDO / プリペアドステートメント mysqli関数ではなくPDOを採用し、プリペアドステートメントでSQLインジェクションを防止。
例外処理 try-catchでPDOExceptionをキャッチし、エラー時のユーザー表示を実装。

Learning 02

GETとPOSTの使い分け

GET IDをURLパラメータで渡すdetail・edit・delete系の処理に使用。
POST フォームデータの送信(add・update)はPOSTで実装し、データの露出を防止。

Learning 03

サーバーサイドバリデーション

error_chk.php 入力値の必須チェック・型チェックをサーバー側で実施。
XSS対策 出力時はhtmlspecialcharsを全箇所に適用し、スクリプト注入を防止。

Tools

使用ツール

code

VSCode

コードエディタ

smart_toy

ChatGPT

AIアシスト

smart_toy

Gemini

AIアシスト

smart_toy

Claude AI

AIアシスト

arrow_back トップに戻る