PHP CRUD.
PHPとMySQLで構築したレシピ管理アプリ
PHPのCRUD処理(作成・読取・更新・削除)を学ぶための課題として制作。MySQLと連携したレシピ管理アプリです。サーバーサイドの基礎を実装しました。
アプリ概要
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
こだわりポイント
完全なCRUDフロー
Create・Read・Update・Deleteの全操作をPHPで実装。PDOを使用したプリペアドステートメントでSQLインジェクション対策も施しています。
入力検証とセキュリティ
フォーム送信時のサーバーサイドバリデーション、htmlspecialcharsによるXSS対策、削除時の確認ダイアログなど、基本的なセキュリティ実装を行いました。
実装時の学び
課題内容
-
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原則を意識した構成にしました。
技術的アプローチ
PDOによるDB接続
PDO / プリペアドステートメント
mysqli関数ではなくPDOを採用し、プリペアドステートメントでSQLインジェクションを防止。
例外処理
try-catchでPDOExceptionをキャッチし、エラー時のユーザー表示を実装。
GETとPOSTの使い分け
GET
IDをURLパラメータで渡すdetail・edit・delete系の処理に使用。
POST
フォームデータの送信(add・update)はPOSTで実装し、データの露出を防止。
サーバーサイドバリデーション
error_chk.php
入力値の必須チェック・型チェックをサーバー側で実施。
XSS対策
出力時はhtmlspecialcharsを全箇所に適用し、スクリプト注入を防止。
使用ツール
VSCode
コードエディタ
ChatGPT
AIアシスト
Gemini
AIアシスト
Claude AI
AIアシスト