PHPで掲示板ぽいものを作りたい

Progate様の有料プランにてHTML・CSSjavascriptPHPSQLについて学んだので
なにか作ってみようと考え掲示板ぽいものを作ってみました。
今回はコメントの表示、コメントの書き込みのみを作成。
XamppのWindows 7.2.10(PHPは7.2.10)を使用しています。 

PHPMySQLを操作する

PHPからMySQLを操作する方法がわからず調べたところ
PDOというのを使用して操作するようでした。
(参考 公式ドキュメント: http://php.net/manual/ja/book.pdo.php)
以下今回使いそうな関数について軽くまとめます。

__construct
 PDOオブジェクトを作成します。
 引数にはデータベースへ接続するための情報を記述したデータソース名
 データベースのユーザー名、データベースのパスワードを指定します。

query
 引数にはSQLステートメントを指定します。
 それを実行し結果セットをPDOStatementオブジェクトとして返してくれるみたいです
 ためしに "SELECT * FROM comments" を引数に指定し結果を確認したところ
 以下のオブジェクトが格納されていました。

 object(PDOStatement)#2 (1) { ["queryString"]=> string(22) "SELECT * FROM comments" }

 このオブジェクトに対して後述のfetchAll()を呼ぶことで配列として取得できました。

prepare
 executeで実行されるSQLステートメントを準備するのに使用します。
 SQLステートメント中に「?」や「:名前」(例 :name、:password)といった
 パラメータマークを含めることができ
 後からexecuteの引数やbindParam、baindValueという関数で
 指定した値に置き換えることができるようです。
 また、パラメーターに指定した値はエスケープしなくてもよいとのこと。

execute
 prepareで準備したSQLステートメントを実行します。
 prepareでパラメータマークを含めていた場合は値をバインドする必要があります。
 バインドする値が文字列の場合はbindValue、bindParamを使用しなくても
 executeの引数に配列として設定することができます。

fetchAll

結果セットに残っている全ての行を含む配列を返します。

 公式ドキュメント(http://php.net/manual/ja/pdostatement.fetchall.php)より

■今回使用するテーブルについて

bulletin_boardというデータベースを作成しそこに
commentsというテーブルを作成しました。
テーブルのカラムには id、user、comment があります。

■実装

スクリプトは表示、投稿用のindex.php
投稿フォームから送られてきた情報をテーブルに格納するinsert.php
bulletinBoard.cssを用意しました。
以下が全体のソースコードです。

index.php、bulletinBoard.css

See the Pen PyrmmN by うしろむき (@kvhbt1pffkpshr4) on CodePen.

insert.php

See the Pen aRgLJR by うしろむき (@kvhbt1pffkpshr4) on CodePen.


入力された値を使用するinsert.phpではexecuteを使用し
表示のみで入力された値を扱わないindex.phpではqueryを使用しました。
完成した画面は以下の様になりました。

f:id:usiromuki:20181031181014p:plain

今後は個別ページの作成機能やページャーの追加など
一般的な掲示板にある機能の追加を行いたいと思います。