PHP データベース を利用したWebアプリケーションの開発【第一回】データベースへの接続
前回、データベース に接続し情報のCRUD(Create[登録]、Read[読み取り]、Update[更新]、Delete[削除])を解説しました。
今回から全5回に分けてデータベースを利用した簡単なWebアプリケーションの開発を解説したいと思います。
この記事の著者 ->S.E; です。
普段は、システム開発に必要なヒアリング、システムの要件定義、設計からプログラマとしてWebサイトやWebアプリケーションの開発、WordPressでのブログの執筆やサーバー運用・管理を行っています。
このページは「未経験の為のプログラミング講座 ゼロから始めるPHPプログラミング〜初級から実践編までを網羅〜」としてPHPの基本的な部分を【初級編】【中級編】【上級編】に分けて解説しています。最終的には簡単なフォームやシステム開発をフルスクラッチで行うことを目的としています。また、参考になる書籍なども紹介しています。
開発するアプリケーション
今回開発するWebアプリケーションは、簡単な会員登録を行い、一覧表示、更新、削除を行える仕様で開発したいと思います。
会員情報の詳細は前々回作成した データベース、テーブルの情報を再利用したいと思います。
項目 | カラム名 | 内容 |
---|---|---|
プライマリキー | test_id | 個別のIDを自動連番で登録 |
名前 | test_name | ユーザーの名前 |
年齢 | test_age | ユーザーの年齢 |
性別 | test_gender | ユーザーの性別 1 or 2で登録(1 => 男性、2 => 女性) |
電話番号 | test_tel | ユーザーの電話番号 |
登録日 | test_create | yyyy-mm-dd hh:ii:ss形式で登録 |
更新日 | test_update | 更新時自動でyyyy-mm-dd hh:ii:ss形式で登録 |
削除キー | test_delete_key | 0 or 1を登録( 0 => 有効、1 => 削除) |
システム開発時に作成するページ一覧
会員登録のWebアプリケーションを開発するにあたり、必要なページを洗い出します。
- 会員登録ページ
- 会員一覧ページ
- 会員情報更新・削除ページ
上記のページが必要なページとなります。
ではそれぞれのファイル名を下記のようにします。
- 会員登録ページ:create.php
- 会員一覧ページ:list.php
- 会員情報更新・削除ページ:edit.php
上記のページに加えて、データベース接続用のクラスファイルと、会員情報のCRUDを記述するクラスファイルを
- データベース接続:class.DB.php
- 会員CRUD:class.Member.php
としたいと思います。
データベース接続スクリプトのクラス化
それでは、前回解説したデータベースへの接続用スクリプトを使い回せるようクラス化したいと思います。
前回の手続き型スクリプトの内容
1 2 3 4 5 6 7 8 9 10 11 12 | <?php $dsn = 'mysql:dbname=test_db; host=localhost; charset=utf8'; $user = 'root'; $pass = 'root'; try{ $PDO = new PDO( $dsn, $user, $pass ); $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch( PDOException $e ){ echo '接続エラー'.$e->getMessage(); } ?> |
上記のスクリプトをクラス化したいと思います。
PHPのクラスに関しての詳細は「クラス〜オブジェクト指向プログラミング〜」を参照してください。
クラス化に伴いclass.DB.phpの作成
では、class.DB.phpファイルを作成し、データベースへ接続するためのクラスを記述します。
「__construct()」はclass.DB.phpを呼び出した時点で実行される内容を記述します。
下記では、$_dsn の文字列を生成しています。
データベース接続部分の「if( !$this->_pdo ){〜}」は既にデータベースに接続した状態の場合は、再度接続しないようにするための条件分岐です。
下記のクラスで メソッド:ConnectDB を実行すればデータベースへの接続が完了します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <?php class DB { private $_db_type = 'mysql'; private $_db_user = 'root'; private $_db_pass = 'root'; private $_db_name = 'test_db'; private $_db_host = 'localhost'; private $_db_char = 'utf8'; private $_dsn = ''; private $_pdo = ''; private $_debug = 0; function __construct(){ $this->_dsn = $this->_db_type.':host='.$this->_db_host.';dbname='.$this->_db_name.';charset='.$this->_db_char; } // DB接続 //************************************** public function ConnectDB(){ try{ if (!$this->_pdo) { $this->_pdo = new PDO( $this->_dsn, $this->_db_user, $this->_db_pass ); $this->_pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } return $this->_pdo; } catch( PDOException $e ){ echo $e->getMessage(); exit(); } } } ?> |
これで、データベース接続部分はclass.DB.phpをCRUD(Create[登録]、Read[読み取り]、Update[更新]、Delete[削除])で使い回すことができます。
可能な限りフロント部分にはプログラムを記述しない
一覧ページや更新ページなどはHTMLやCSSが記述されています。
その中にさらにPHPのコードが入ると非常に複雑なソースになってしまうため、極力PHPのスクリプトは外部ファイルでクラス化することをお勧めします。
S.E->お勧め記事;
- PHPフレームワーク「Laravel」ディレクティブ-分岐処理(条件分岐)-
- PHPフレームワーク「Laravel」ルーティング Route::get()
- XSERVERにSSHを利用してLaravel環境を構築する
- PHP フレームワーク Laravel ディレクティブ – ループ変数 $loop –
- PHPフレームワーク「Laravel」ディレクティブ-繰り返し処理(ループ処理)-
- PHPフレームワーク「Laravel」PHPテンプレートを利用する
- PHPフレームワーク「Laravel」Bladeテンプレートを利用する
- PHPフレームワーク「Laravel」MVCとコントローラを利用する
- macOS Monterey にアップデート後、composerやhomebrewでenv: php: No such file or directoryが出る