![021_コメントの投稿表示を作る](https://assets.st-note.com/production/uploads/images/17906236/rectangle_large_type_2_22da24cc99efcb8963f64c3484a6fe4e.png?width=1200)
自作CMSの作り方#21 コメントの投稿/表示を作る
こんにちは。suipediaです(∩´∀`)∩
前回は関連記事の設定ができるようにしました。
今日は各記事にユーザ(読者)からコメントを受け付けられるようにします。
コメントの投稿が可能になるとユーザとのコミュニケーションが可能になります。コメントがつけられると運営してる側からするとめちゃくちゃ嬉しいんですよね(笑)
そんな思いができるように、コメントフォームを用意しましょう。
今回の内容はこれまでに一度は出てきた内容ばかりなので、そこまで難しくないと思います。
では参りましょうヾ(≧▽≦)ノ
コメントテーブルを用意する
まずコメントの機能についてですが、あなたもいろんなブログで見たことがあるであろうものと同じ内容です。
記事の下部にコメントの投稿フォームを設けて投稿されたらそこに永続的に表示されるというものです。
永続的なデータ保存となると必要なのはテーブルですね。
早速phpMyAdminから以下のクエリを実行してください。
create table org_comment(
serial_id int(5) AUTO_INCREMENT not null comment 'シリアルID',
category_id int(2) not null comment 'カテゴリID',
contents_id int(3) not null comment 'コンテンツID',
name varchar(200) not null comment '名前',
comment varchar(4000) not null comment 'コメント',
disabled_flg varchar(1) comment '無効フラグ',
create_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP comment '作成日',
update_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP comment '更新日',
primary key(serial_id)
)character set utf8 collate utf8_general_ci
comment='コメント';
このように実行ですね。
右下辺りにある実行ボタンを押下いただき、
このような表示になればOKです。
用意した項目をひとつずつ説明していきます。
まずひとつめがシリアルIDです。これは主キー(一意に特定するための項目)として扱います。コメントは「どの記事に投稿されたか?」を特定するのにカテゴリIDとコンテンツIDを使いますが、それだけでは不十分です。一つの記事に複数のコメントがつくことがありますので。
そうなると、主キーの設定について2つの方法をとることができます。ひとつは今回採用したカテゴリID、コンテンツIDとは別にシリアルIDを用意する方法。これは主キー項目が1つで済みます。
もうひとつはカテゴリID、コンテンツIDに加えさらにそれに対して1から採番していく記事毎のシリアルIDをもたせ、この3項目で複合主キーとする方法です。
どちらでもいいです。
今回採用した一つの項目で1ずつ数字をあげていく場合、シリアルIDの登録時に「今あるデータののシリアルID+の値」を登録することになるのですが、そういう処理を書くのは面倒なので、MySQLが便利な機能を用意してくれています。
それが・・・
このAUTO_INCREMENTという設定です。インクリメントという単語はこれまで(forループの説明とか)にも出てきていて増加という意味でした。
そしてAUTOは自動で、なのでこのシリアルIDは登録時に値を指定しなくても勝手に今の最高値+1を設定してくれる、という動きをします。
ここまでの説明でこんな疑問をもってほしいです。
「データがない時はどの数字から始まるの?(・∀・)」
と。はい、phpMyAdminでコメントテーブルを開き、その中の操作タブをクリックしてください。
その中にテーブルオプションというブロックがあるでしょう。
この赤枠部分が次にデータが登録されたときに付与するオートインクリメント項目の値を握っています。はい。
では、残りの項目は特段説明することもないので駆け足でいきます。
まず、カテゴリIDとコンテンツIDは先ほども触れました通りコメントが投稿された記事情報を特定するための情報です。
そして名前はユーザが入力した名前が入り、コメントも同様にユーザの入力内容を格納します。
無効フラグは投稿をいただいたけど、画面に表示しておきたくない場合に使います。1だったら無効状態として運用します。
最後の作成日、更新日はほかのテーブルでも共通してもっている管理項目です。
次、いきますね。
管理者ページからコメント情報の管理を可能にする
では、管理者ページでコメントの管理ができるようにしましょう。
やっていただくことは前回の関連記事のとき同様に2つあります。コンテンツテーブルへのコメント管理ページ用レコードの追加とそれに対応するフォルダ・ファイルの追加です。
以下のクエリをphpMyAdminから実行してください。
この記事が気に入ったらサポートをしてみませんか?