PHPで掲示板ぽいものを作りたい
Progate様の有料プランにてHTML・CSS、javascript、PHP、SQLについて学んだので
なにか作ってみようと考え掲示板ぽいものを作ってみました。
今回はコメントの表示、コメントの書き込みのみを作成。
XamppのWindows 7.2.10(PHPは7.2.10)を使用しています。
■PHPでMySQLを操作する
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を使用しました。
完成した画面は以下の様になりました。