というか、想定した機能は一通り動くようになり、今のところ不都合はない(ハズ)です。
とはいえ、何が起こるかわかりませんけどね。
そこで、次に手がけたのは「削除」、これは本当はとっても簡単で、実際にファイルからデータを消去するのではなく、「許可」「保留」と同じ場所(ログデータ中)に「del」という属性をセットして、もっかいファイルに書き戻してやるだけ。
ほとんどの動きが「許可/保留」とおんなじなので、この3つをまとめて処理できるよう1つの関数内で調整しただけです。調整というのは「許可/削除」は管理者パスワードが必要ですが、「削除」には投稿者パスワードでも実行できる、という仕様なのでそのあたりの帳尻合わせでした。(簡単かんたん)
ここで「削除」をなぜこんな手抜き仕様にしたかというと、1クリックで削除作業が済んでしまうために、「もし間違って削除」してしまった場合のリカバリーが容易に行えるように、という配慮です。
嘘です
実は個人的な好みで、掲示板などでもデータの削除を行うとナンバリングに穴が空いてしまうのが前々から気に入りませんでした。
そこで新規投稿すると、自動的にその空いているナンバーを使えるようにと、レコードは残しました。同時に、データ自体は削除しないで残しておいても一緒(どうせ一般モードだと表示されない)だし、と属性を変えるだけで済ませたというのが本音です。
次いで編集画面
実は新規投稿画面、またそこでエラーが出て投稿しなおさせる画面の設計時に、1レコードの用語データを引数に登録画面を作る関数は作ってあったので、実質的には入口となってファイルから対象データを引っ張ってくる部分と、あとでファイルを書き出す部分を加えてやることで実現してます。ほとんどが新規投稿と同じようなコードなのですが、まとめてしまうほど最適化はしてません。
そして、休日を頼みに、一気に仕上げまで走ります。
実はトップページには投稿順に用語リストが表示されます。この出力部分を1つの関数に移し換え、検索結果の表示時にも使えるように引数の調整を行いました。
そして検索語がPOST(あるいはGET)で指定されていた場合についてのみ、ファイルからデータを読み込む際に検索一致するレコードのみ表示用バッファに格納し、それを表示用の関数に渡してやるだけです。もちろん、トップページの「新規投稿順」というのは、そのフィルタを通さないだけ、という安直な仕様でした。
もともと、新規投稿や編集時の保存の際に、ファイル中ではデータは日付順に並んでますからね。つまり検索結果の方でも、一致するデータの並びは投稿順です。
本来なら50音順にでも並びかえておいてやるのが親切なんでしょうけど、そうそうパターン一致するデータが大量になるわけでもないだろう、と手抜きしました。(笑)
(単にソートするぐらい大した手間じゃないんだけどね)
そして最後に、検索語って、見出しだけじゃなくて本文の中でもできた方がいいよね、と検索モードを追加(ワイド検索)したぐらいです。
でもでも、実際にHPのコンテンツに入れ込むための設定をしてやるととたんに真白。(Xサーバーって、エラー表示しないで問答無用に真白画面になるんだなぁ、これが)
やはり、バグ取りに一番時間がかかるものですねぇ。
前回の「Web拍手」からの引き続きで、慣れてきたのか、(仕事が……)期間がかかった割にはスムーズに開発できました。
ずっと以前、別のHPのコンテンツに用語集を入れようとフリーのPHPスクリプトを探した時には、どうも機能的に満足のいくものが見当たらず、いずれ自前で、とは思っていました。(perlのならいいのがゴロゴロしてたのに)
ひとまず、目標達成です。そしてHP版に実装したものの……
スクリプトを作るのに必死になって、用語を登録する気力が残ってない……(なんだそりゃ/爆)
>>HP版用語集
≪ 続きを隠す
|2008,07,12, Saturday 07:40 PM | comments (0) | trackback (0) |