自作CMSの作り方#17 記事の内容を保存する
こんにちは。suipediaです(∩´∀`)∩
前回は編集ページのサイドメニューを作成しました。
サイドメニューは各メニューが記事を装飾するための様々な動きをするのですが、script系の実装量が多くテンポが悪くなるので、今回はまず記事情報を更新する挙動の部分をやっていきます。
今回のゴールは3つのテキストエリアの情報を保存し、またページを開いた時、続きから編集できるようにするところです。
今回も(http://localhost/admin/edit/?category_id=3&contents_id=1)を対象にみていきます。
では、参りましょう(。-`ω-)
記事更新の内部処理、構成について
#14の実装で察しがついている方もいるかもしれませんが、まず結論から言うと、記事の内容はデータベースではなくテキストファイルに保存します。
これまではCMSを作るにあたって永続的なデータ保存はデータベースを使ってやってきました。
それはデータをレコード単位で処理し、更新される内容もおおよそ想定できるから、というのが理由の1つです。
ですが、コンテンツの記事として使う内容の場合はどうでしょうか。
例えばテーブルを作る際、テキスト項目や整数項目には許容文字数・桁数を設定しましたよね。
記事の内容はモノによって文字数がバラバラです。500字程度で終わることもあれば10,000字を超えることもあるかもしれません。
データベース側には許容できる文字数の限界が決まっています。(参考→外部記事)まぁかなり数字が大きいので、超えてしまう心配はないのかもしれませんが・・・。
あとはデータベースに保存する場合、文字化けの懸念もあります。顔文字とか記号の一部の文字は文字が化けることがあります。それはもちろんファイルに保存する場合もあり得るっちゃあり得るのですが、私の経験ではないです。
(後付けですが)学習的な意味でもテキストファイルへの書き込みをやってみましょう(∩´∀`)∩
で、どのように保存していくのか?という話になりますが、#14を思い出してみてください。lead、toc、messageという3つの言葉が出てきていました。
リード文はlead.txtに、目次はtoc.txtに、本文はmessage.txtに保存します。
では次の項から今回の実装に入っていきましょう。
冒頭でお伝えしました通り、今回は各テキストエリアに入力された内容をサーバに投げてテキストファイルに登録してもらう、ということをやります。
edit_request.phpの配置、解説
前回お渡ししましたeditsub.phpの下の方を見てみてください。
<?php
//include_once($webroot."/src/common/request/edit_request.php");
//include_once($webroot."/src/common/request/preview_request.php");
//include_once($webroot."/src/common/request/clean_request.php");
//include_once($webroot."/src/common/request/img_file_send_request.php");
//include_once($webroot."/src/common/request/fixed_script.php");
//include_once($webroot."/src/common/request/decoration_script.php");
?>
コメントアウトしてある行がズラズラっと並んでいるでしょう。編集内容をサーバにリクエストをするのはどれだ?と探してみてほしいのですが、一つそれっぽい名前のものがありますよね。
//include_once($webroot."/src/common/request/edit_request.php");
エディット_リクエスト・・・!これですっ!じゃあコメントアウトを解いてあげてください。
これでブラウザの方ではエラーが出るようになりました。存在しないファイルをインクルードしようとしているからですね(∩´∀`)∩
以下のフォルダに
以下のファイルを配置してください。
この記事が気に入ったらサポートをしてみませんか?