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

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

セサミ5

鍵のいらないスマートロック
セサミ5の体験談!オススメ商品!

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

2,450円 (税込)(Amazon参考価格)

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

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

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

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

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

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

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

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

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

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

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

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

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

2,450円(税込)

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

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

Amazon SALE中
¥2,750 16%OFF 450円OFF

2,300円(税込)

初心者からちゃんとしたプロになる 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プリプロセッサ

990円(税込)

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

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

Amazon SALE中
¥2,640 42%OFF 1,110円OFF

1,530円(税込)

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

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

3,520円(税込)

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

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

URLの疑似静的化

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

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

ランダム表示バナー

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

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

日付比較

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

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

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

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

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

PHPの覚え方

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

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

配列の解説

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

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

POST送信

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

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

PHP覚え方

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

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

PHPで作るカレンダー

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

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

WEB言語紹介

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

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

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を仕事で使ったときに理解度が足りないと感じわかりやすい解説記事を書きました。

スクロール変換

縦スクロールを横スクロールに変換するJavaScript

縦にスクロールした分だけ、横にスクロールするJavaScriptを応用して、その場にとどめながら透明度を変化させます。

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

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

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

スクロール監視

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

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

tableデザイン

tableで作る表をシンプルでキレイに作るHTMLとCSS

tableで表を作るときに気を付けたいのが、どこまでシンプルでわかりやすく作れるかという点ではないかと個人的には思ってます

CLS対策上級編

CLS対策上級編 CSSのインライン化とAdcence遅延読み込み

CSSのインライン化とGoogle Adcence遅延読み込みでGoogleのスコアを大幅に改善しCLSもほぼ0にしました

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

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

今治タオル
1位

今治タオル

高級タオルの代名詞「今治タオル」を購入してみました。毎日使うバスタオルを1ランク上の物に変えるだけで使うたびに幸せな気持ちになれます。

電子ノート
2位

電子ノート

電池もちが抜群で持ち運びに便利な電子ノートのレビューです。文庫本サイズの電子ノートはアイデアを思いつたらすぐにメモれる優れモノ

PHPを使って作るCMS
3位

PHPを使って作るCMS

PHPを覚えたらデータベース回りも一緒に覚えるのがオススメです、 制作できるものの幅が広がって色々な仕組みを理解できます

鋸山 地獄覗き
4位

鋸山 地獄覗き

千葉県の観光名所「鋸山」へ行き地獄覗きと百尺観音、奥の院無漏窟など。車で行く場合は鋸山駐車場がオススメです。

α7Ⅲで夜景
5位

α7Ⅲで夜景

去年はPENTAX Q7で撮影してきた東京タワーと浅草に今年も夜桜撮影に行ってきました。買ったばかりのソニー α7Ⅲを片手に。

タフグミ
6位

タフグミ

仕事の合間によく食べるグミ。私は歯ごたえがあるグミが好きです。そんなハードグミ界にタフグミが登場。最近こればっかり食べています。

marginとpadding
7位

marginとpadding

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

車用スマホホルダー
8位

車用スマホホルダー

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

コンプライ
9位

コンプライ

評判と値段の高いコンプライのイヤーピースの購入後1週間レビュー!柔らかいウレタン素材のイヤーピースは装着前に指でつぶして耳穴に装着します。

jquery-match-height.js
10位

jquery-match-height.js

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

カテゴリ一覧

オススメ商品レビュー

オススメ商品レビュー

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

WEB制作

WEB制作

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

カメラ

カメラ

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

美味しいもの

美味しいもの

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

Amazonプライム動画

Amazonプライム動画

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

旅LOG

旅LOG

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

プロフィール

プロフィール

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

日記

日記

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

thanks

thanks

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

マネーリテラシー

マネーリテラシー

お金や税金、資産形成に関する情報や体験談をブログでお伝え!

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

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

2,450
(税込)