自作CMS制作のススメ PHP+データベースで作るもの

自作CMS制作のススメ PHP+データベースで作るもの

PHPを覚えたらSQLも覚えて自作のCMSを作ってみよう

#99 PHPを使って作るCMS

WEB制作

PHPを覚えたらデータベースを使った自作CMSを作るのがオススメです。 簡単ですとは言いませんが、作ることでいろいろな仕組みや学びが大きく増えます。 自分のブログ用のCMSなら何かあっても自分が困るくらいで済むので、気楽に作れますし。

公開日:
最終更新日:

商品リンクにアフィリエイト広告を利用しています

サイトマップサイトマップ

PHPとMySQLで作る 自作CMSのススメ

PHPを勉強中の人があまりデータベース連携のツイートをしないなぁとつぶやいたら、びっくりするぐらい広がったので、実際に自分がPHP+データベースを使って作ったものの中から、役に立ちそうなものを紹介します!

自作のCMS!

CMS:コンテンツマネージメントシステム を自力で作る

私も昔、ムーバブルタイプというCMSから始まって、ワードプレスなどのサーバーインストール型のCMSや、アメブロなどのブログサービスを利用したことがあります。

今やワードプレスは誰もが使っているCMS、ブログサービスとなっていて、超便利なんですけどね、ワードプレスはいろいろとめんどくさいところがあるじゃないですか。

あまり悪く言うと、愛用者の方から怒られそうなので、ちょっとだけ。

ワードプレスはバージョンアップがめんどくさい。

これは愛用者の方ほど感じているのではないかと思うんですけど、バージョンアップのたびに、ドキドキしながらアップデートしなきゃいけなくて、アップデートしなかったら脆弱性が、となるわけですよね。

したらしたで、プラグインが死んだり、表示が崩れたり、まぁめんどくさい。

こまかいところがいじりづらい

簡単にブログをはじめられる汎用性がある分、細かい調整がすごい大変。
テーマを変えるという方法もありますが、どこをどう弄ったらなにが変わるかを把握するのが大変。

自分で作ってしまえば、見た目や機能は自由自在。(実現できるかどうかは自分次第なんですけど)

CMSを作るには何が必要か、どういう作りになっているかが学べる

私が大事にしていることで、どういう仕組みで物事がなりたっているかを理解するというものがあります。

仕組みを理解すると、なにをどういじればどう動くか、が見えてくるので、それがわかるといろいろと理解が深まります。

CMSに必要なものを考える

1.記事のINDEX情報
2.カテゴリ管理
3.投稿画面

最低限必要な機能は上の3つです。

スモールスタートで機能を後から追加していくのが良いと思います。
多分、ある程度作ったらもう一回最初から作りたくなると思うので。

初めて作ると設計の甘さが見えてくるので、もっとこうすればよかった、という点が見えたらぶっ壊して作り直すといいですよ。(さらっと)

今さらですが、CMSの作り方のレクチャーページではないので、そこは期待しないでくださいね。レベルアップのために作ってみるといいよ、っていうテーマです。

ちなみにこのサイトのCMSは自作で作りました。3代目です。

CMSの簡単な全体像を考える

私の場合は、HTMLデータをブラウザ上で書くの嫌だったので、静的なHTML情報は普通にローカルPCからアップロードして、インデックス情報をデータベースに登録する、というセミCMSのような作りにしています。

CMS全体設計
CMS設計の概念図

.phpファイルをレンタルサーバーにUPして、そのphpファイルからDBのインデックス情報を読み込み、ページをレンダリングして表示させています。

管理すべきインデックス情報を考える

ここから先は正解なんてなくて、自分が作りたいように作るのが面白いと思いますが、一例として私のCMSの例をあげさせていただきます。

インデックステーブル カテゴリ用と記事用の2つ

id:ユニークキー
カテゴリ:ブログのカテゴリ
サブカテゴリ:ブログのサブカテゴリ
タイトル:HTMLのタイトル
名前:パンくずとかに出す用の名前
H1:H1タグ
ディスクリプション:meta description
パス:記事のパス
制作日:投稿日

そのほかちょいちょいあるんですが、そこはお好みで追加ということで。
で、DBに登録する情報は管理画面を作って、そこからデータベースに登録します。

データベースに登録する用の管理画面

実際に使っている投稿画面のキャプチャです。

アナリティクス
自作CMSのシンプル投稿画面

こんな感じで、CMSに必要なものを考えて、データベースに何を登録して、どういう流れでWEBに表示させるか、とちゃんと考えて作らないとうまくいかないわけでです。

色々な知識とスキルがものをいう CMS制作

自分で何かを作ったことがない人が作ると、頭で描いていたものを実現するには、色々と面倒な仕組みが必要だと気づくことができます。

データベースに投稿するには、投稿画面が必要で、投稿画面を作ったら修正する画面が必要になる、と。

データベースを作るにはphpMyAdminの使い方を知らなきゃいけないし、phpMyAdminを使うにはMySQLの使い方を知らなければならない。

データベースから情報を呼び出すにはSQLのクエリーを覚えなければならないし、ブログのデザインを作るにはHTMLとCSSの知識が必要。

言葉にすると凄いめんどくさいんですけど、実際に作ると思っている以上にめんどくさいです。

SQLの入門にはこちらの書籍がわかりやすくてオススメです。

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリわかる入門シリーズ)

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリわかる入門シリーズ) #303

3,030円 (税込)(Amazon参考価格)

SQLの使い方から、わかりづらい JOIN まで分かりやすく説明されています。

めんどくさいの先にあるものが大きい

1クリックでブログが始められる便利な世の中で、こんな苦行をしてまでCMSを作らなくてもいいじゃないかと言われそうなんですが、作ると楽しいんですよ。

なにが楽しいって、自分でほしい機能を自分で追加できる。
フルスクラッチのシステム開発で、自分専用のCMSが作れる。これに勝る楽しさはないでしょ。

偉そうに言うと、これを作れる人は限られた人なわけですよ。
プログラムの知識とWEB制作の知識が必要で、今風で言うフロントエンドもバックエンドも両方使える必要があると。

自分で作ったブログの管理システムなら、ブログに対する愛着もわきますよね。
表示速度が遅いのも、デザインがうまくいかないのも全部自分のせいだと思えると、なんとかしてやろうとそう思えます。

誰にでも簡単に作れるものはそれなりの価値しか生まない。

この記事を読んでいる人で、HTMLとPHPとデータベースの勉強をしているのであればぜひ挑戦してみてほしいです。

完成させることができたら、WEBにおけるデータベースとPHPの使い方の視野が大きく広がると思います。データベースってこんなことにも使えるのかと。

めんどくさいけど、そこまで難しい知識は必要なく、割とシンプルな作りで実現できるので、やってみてもいいと思います!

WEBデザイナー・プログラミング学習にオススメ

記事内で紹介している商品リスト
(価格はAmazon参考価格)

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリわかる入門シリーズ)

3,030円(税込)

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリわかる入門シリーズ)

初心者からちゃんとしたプロになる PHP基礎入門〈PHP8対応〉

2,750円(税込)

初心者からちゃんとしたプロになる PHP基礎入門〈PHP8対応〉

誰もがあきらめずにすむPHP超入門

1,848円(税込)

誰もがあきらめずにすむPHP超入門

SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)

2,068円(税込)

SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)

3ステップでしっかり学ぶ MySQL入門 [改訂2版]

2,728円(税込)

3ステップでしっかり学ぶ MySQL入門 [改訂2版]

Web制作者のためのSassの教科書 改訂2版 Webデザインの現場で必須のCSSプリプロセッサ

2,640円(税込)

Web制作者のためのSassの教科書 改訂2版 Webデザインの現場で必須のCSSプリプロセッサ

WordPressユーザーのためのPHP入門 はじめから、ていねいに。[第3版] 〈WordPress 5.x/Gutenberg対応〉

1,652円(税込)

WordPressユーザーのためのPHP入門 はじめから、ていねいに。[第3版] 〈WordPress 5.x/Gutenberg対応〉

詳細! PHP 8 + MySQL入門ノート XAMPP + MAMP 対応

3,520円(税込)

詳細! PHP 8 + MySQL入門ノート XAMPP + MAMP 対応

PHPを使って作るCMSの関連ページ

PHPで作るカレンダー

PHP+HTMLで作る 祝日対応のカレンダーの作り方

forとifとforeachがメインのPHPによるカレンダーの作り方です。 祝日設定がちょっとめんどくさいんですよね。

POST送信

PHPを使った漢字クイズの作り方解説 その1 POST送信

【初心者向け】PHPを使った漢字クイズの作り方を解説します。1回目はGETとPOSTの簡単な解説から実際に使うPHPの紹介です。

PHP覚え方

PHPを手っ取り早く覚えるには作りたいものを作ること

PHP単体でもHTMLよりもできることの幅はひろがるけれど、それにプラスしてデータベースを扱えるようになると無敵感を味わえます。

WEB言語紹介

WEB制作をささえるHTML・CSS・Javascript・PHP

いつもWEB制作をささえてくれるいろいろな言語を紹介しています。 他にもMySQLがあるんですが長くなるので割愛しました

URLの疑似静的化

URLの疑似静的化 動的URLを静的URLにする方法

htacessを使いhtmlファイルが存在しない静的URLを生成する方法と、仕事で使った疑似URLの活用方法の紹介です。

ランダム表示バナー

PHPで作るランダムバナー表示プログラム

PHPでランダム表示させるバナープログラムです。 バナーと言っていますが、別にバナーじゃなくてもランダムで表示できます。

日付比較

キャンペーン期間中だけ表示させるPHPプログラム

期間限定の表示は訴求が強いけど、取り忘れるとユーザーに損した気分を与えてしまうので、忘れずにしっかり対応したいですね。

PHPで作るカレンダーの作り方2

PHP+jQueryで作る土日祝日が選べないカレンダーの作り方

PHPで作るカレンダーの作り方の第二弾です。 今回はクリックした日付を取得してformに代入するところも解説してます。

PHPの覚え方

PHPの良いところは難しいと思われていること

PHPって人が思っているほど難しくなく、便利でいろいろな面白いものを作れるプログラミング言語です。

配列の解説

PHPの連想配列の多次元配列を使ったクイズの作り方

PHPの配列ってイメージは付くけどちゃんと理解するのが難しい。 例題がわかりづらいせいだと思うんですよね。これはわかりやすい。

つまづきやすい5つのポイント

【初心者むけ】Jqueryのつまづきやすい5つのポイント解説

Jqueryの構文がわかってなかったとき、とりあえずコピペして使ってました。 ちゃんと理解して使うとできることが増えます

スクロール監視

スクロール監視の新定番 intersecton observer API

スクロールに応じて何を変更させたりするときに便利なintersecton Observer APIの解説記事です。

indexOf

JavaScriptのIndexOfの使い方の復習

indexOfを使ってindex番号を取得する方法の解説記事を書いていたら、indexOfを使わなくても取得できました。

アンカーリンクナビ

交差監視を利用したアンカーリンクナビゲーション

JavaScriptの「Intersection Observer」を使い、ナビゲーションが変化するアンカーリンクを作りました。

bookblock

本をめくるJqueryライブラリ bookblock

本をめくるようなモーションを実現するbookblock.jsを改造してレスポンシブ対応にしてみました。

jquery-match-height.js

高さを簡単に揃えるjquery-match-height.js

簡単に要素の高さを揃える「jquery-match-height.js実際の使用例をわかりやすく画像付きで解説しています。

交差監視

Intersection Observer APIを図解で解説

Intersection Observerを仕事で使ったときに理解度が足りないと感じわかりやすい解説記事を書きました。

CLS対策初級編

CLS改善をしてPageSpeed Insightsを大幅改善

CLS(Cumulative Layout Shift)を改善する方法とCLSを確認する方法などをまとめました。

CSSで作る横スライド

1行のCSSで作る横スライドの作り方

CSSのoverflow-x: scrollを使った横スライドの簡単な作り方と事例紹介です。 簡単便利はいいことだ。

marginとpadding

CSSのmarginとpaddingの違いについて

CSSのmarginとpaddingの違いについて解説しました。 余白をつくるプロパティの使いわけおを考える。

SNSでこの記事をシェアできます

ブログ デイリーアクセスランキング

車用スマホホルダー
1位

車用スマホホルダー

スマホをカーナビとして使うと熱さで充電ができなくなるので、熱対策と1年間使って外れることがなかったスマホホルダーの紹介。

ノートPCスタンド
2位

ノートPCスタンド

ノートパソコンを横にしまうと結構な専有面積があるのですが、立てて収納できればわずか数cmで使えるので本当に快適です!

MusicBeeのレイアウト変更方法
3位

MusicBeeのレイアウト変更方法

MusicBee 3.1のレイアウトをデフォルトの状態から、自分好みのレイアウト設定に変更する方法を写真付きで紹介しています。

PHPで作るカレンダー
4位

PHPで作るカレンダー

forとifとforeachがメインのPHPによるカレンダーの作り方です。 祝日設定がちょっとめんどくさいんですよね。

昭和記念公園
5位

昭和記念公園

東京都立川市にある国営昭和記念公園に家族で遊びに行きました。 広大な園内にはいろいろな遊具や春の花や大きな原っぱがあります。

indexOf
6位

indexOf

indexOfを使ってindex番号を取得する方法の解説記事を書いていたら、indexOfを使わなくても取得できました。

武蔵丘陵森林公園
7位

武蔵丘陵森林公園

2019年5月2日のゴールデンウィークに埼玉県にある国営武蔵丘陵森林公園へ家族で遊びにいきました。

SDカード
8位

SDカード

SDカードのせいかイマイチ不明なのですが、撮影した写真データが破損するという事象が発生しまして、新しくソニーの純正SDカードを購入しました。

POST送信
9位

POST送信

【初心者向け】PHPを使った漢字クイズの作り方を解説します。1回目はGETとPOSTの簡単な解説から実際に使うPHPの紹介です。

配列の解説
10位

配列の解説

PHPの配列ってイメージは付くけどちゃんと理解するのが難しい。 例題がわかりづらいせいだと思うんですよね。これはわかりやすい。

カテゴリ一覧

オススメ商品レビュー

オススメ商品レビュー

世の中にある比較サイトや、いかがでしたか系サイトが嫌いなんです。使ってないのにえらそうなこと言うなと。なので体験談です。

WEB制作

WEB制作

WEBサイトを作れますと一言に言っても色々な技術があるわけですよ。アウトプットの形は一緒でもいろいろこだわりがあるんです。

カメラ

カメラ

2018年4月に購入したソニーのミラーレス一眼「α7Ⅲ」に関連する記事一覧ページです。 作例集やカメラグッズレビューなど。

美味しいもの

美味しいもの

食に関してはあまりこだわりがないんですけどね、こだわりがない分美味しいと思ったものは本当においしいと思ったものなんですよ

Amazonプライム動画

Amazonプライム動画

Amazonプライム会員なら無料で利用できるAmazonプライム動画から、いろいろな動画をみたレビュー記事のまとめページ

旅LOG

旅LOG

家族旅行やおでかけした際の旅ブログです。夏休みの家族旅行(4人家族)で訪れた観光名所の感想などを記しています。

プロフィール

プロフィール

Start-Point.netの管理人のプロフィール紹介を兼ねた、自分の中のルールや決め事やエピソードなでお書いていきます

日記

日記

日記と言っても色々な日記があるわけで、記録的な日記や心理描写を色濃く描いた日記などをまとめたページです。

thanks

thanks

自分を表現することって意外と難しいんですよね。照れがあったり、間違ったこといってないかとよくわからない何かと戦ったりして。

記事内で紹介している商品

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリわかる入門シリーズ)

3,030
(税込)