PHP>PHPでシンプルな掲示板を作るチュートリアル

PHPでシンプルな掲示板を作るチュートリアル

2018年5月29日

全体のソースコードgithub

 

 

今回はPHPの勉強がてらシンプルな掲示板を作っていきます。

本当にシンプルで新規スレッド作成と、コメントができるというだけの掲示板です。

 

ちょっと長いです

 

 

フレームワークはbootstrap4を使います

データベースはmysqlを使います。
まずはsample_bbsなど適当なデータベースを用意してテーブルを作成していきます。

 

 

laravelで作った時にpublicフォルダをドキュメントルートとして、公開するフォルダに制限をかけていました。

今回もそんな感じで公開するフォルダをpublicフォルダにします。

そして、ヘッダーとフッターは別ファイルにして共通化したいと思います。

 

 

 

 

テーブルの作成

 

 

 

 

テーブルはこんな感じです。

 

 

外部キーの設定もしておきます

 

掲示板のスレッドIDとコメントは紐づいている必要があります。

 

 

phpでデータベースに接続する

 

config/dbinfo.php

 

先ほど作成したデータベースに接続します。

データベースに接続する処理はローカル環境ならば関係ないかもしれませんが、本番環境ではパスワードなどがモロ見えになってしまうので、publicフォルダには置かずconfigフォルダにdbinfo.phpという設定ファイルを設置しています。

 

 

パーツの作成

画面の共通部分は使いまわせた方が便利です。
ヘッダーとフッターは共通部分なので共通部分を作成します

ワードプレスでテーマを作成している人はすぐに理解できると思います。

 

ヘッダーの作成

 

public/parts/header.php

 

 

ここではbootstrapの力を使ってヘッダーメニューを作成しています。

 

 

public/parts/footer.php

 

 

フッターではjavascriptなどの読み込みを行います。

これはヘッダーでトグルナビゲーションを使用しているので必須です

 

 

トップページを作る

 

トップページを作ります。

トップページはとりあえず掲示板の投稿一覧を表示させます

 

 

public/index.php

 

 

index.phpでは分解したヘッダーとフッターを読み込んで表示させて

掲示板の投稿一覧を表示させています。ここではタイトルのみを表示し

detail.phpをリンク先として、掲示板の投稿IDをパラメータとして渡しています。

データの取得にはgetpostsメソッドを使っていますので

これを作成していきます

 

 

メソッドをfunctions.phpというファイルにまとめていきます

 

config/functions.php

 

 

これでデータベースから値を取得しています。

 

取得した値は連想配列に入れて取り出します。

 

 

 

これでトップページに掲示板のスレッドのタイトルが表示されますが、データがないといけないので、ダミーでデータを入れておきます

 

 

こんな感じで適当なデータを入れておきました。

 

これでindex.phpにアクセスするとスレッド一覧が表示されるようになったので
今度はスレッド詳細画面を表示させます

 

 

スレッド詳細画面を作る

 

次は結果を表示させたいのでdetail.phpを作ります

 

public/detail.php

 

 

これで記事詳細ページができました。

index.phpとほとんど同じような処理です。

 

 

今回もget_thread_detailメソッドというのを定義することになりますので、functions.phpのほうに記載していきます。

 

 

これで、トップページのスレッド一覧画面から記事タイトルをクリックすると
スレッドの詳細が表示されるようになりました

 

 

さて、ここまできたらスレッドを新規作成できるようにしたいです。

スレッドの作成にはフォームを使い、フォームの内容をdbに保存するという処理を行う必要がります。

 

では、新規作成フォームを作っていきます

 

public/newthread.php

 

フォームの表示と保存処理へと値を渡すことをやっています。

タイトルと本文の両方が入力必須項目です。

また実際にデータベースに保存する処理は独自の関数を作っているので、そちらも定義していきます。

 

config/functions.php

 

idは、AUTO_INCREMENTなので適当に0をつけも、勝手にカウントアップされます。

user_idは、ユーザー登録機能を考えてつけましたが、今回は実装しないので全て1で保存します。

 

 

bootstrapを使うと簡単におしゃれなフォームが作成できますね。

 

これで投稿するボタンを押せばスレッドが作成されます。

 

コメント機能を作る

次はコメント機能を実装していきます。
基本的には同じ流れです

public/detail.php

 

コメント一覧を表示するという部分から追加しています。

コメントがあればコメント一覧を表示します。

 

さらにフォームを作成してエラーの確認を行い、保存処理をするというのは、スレッド作成と同じ流れです。

コメント一覧取得処理と、コメント保存処理は、functions.phpに記載します。

 

config/functions.php

 

同じような流れです。

コメント保存処理は、スレッドIDが必須になるので、スレッドのIDを渡しています。

 

これで機能は完成したので、ヘッダーのリンクを修正します

 

public/parts/header.php

 

これで超シンプルな掲示板が完成しました!