phpな休日 BBS sitemap
1. 月間予定

月一で “月間予定” が送られてきたりしますが(私事)、PHPで作っていつでも最新の書き込みを見られたほうが良いでしょう。と言うことで、

サンプルを新しいウィンドウで実行

上記サンプルはカレンダーの日付をクリックすると書き込み・編集・削除が出来ます。パスワードは hoge です。(HTMLタグは無効になります。URLを書き込むと投稿できません。ログは40行に制限してあります。)

ログに記録するのは

$nen<>$gatsu<>$hi<>$comment<>$id<>

こんな感じ。最後の項目 $id はログを日付順にするための項目で、例えば2006年9月1日なら 20060901 という数値にして、書き込み時に挿入箇所の目安にしています。 月日を date("Y")・date("n") で取得しているので、月と日を2桁にするために

$sgatsu = sprintf("%02d", $gatsu); //$id用に"月"を2桁にする
$shi = sprintf("%02d", $hi); //$id用に"日"を2桁にする
$id = $nen . $sgatsu . $shi; //8桁の数字からなる$id

このような処理で8桁の数字を作って $id にしています。
新規の記事が送信されてきたら、$id(ログの5番目の項目) を見ながら走査していって、ログの $id より送られてきた $id が大きかった時点で、その場所に行を挿入するようにすればログが日付順で書き込まれます。

$log = file("monthlyplansamplelog.cgi"); //データを読み込む
for ($i = 0; $i < count($log); $i++) { //走査する
$list = explode("<>", $log[$i]); //区切り文字 <> で区切る
if ($id > $list[4]) { //ログが日付順になるように(目安は$id)
array_splice($log, $i, 0, $writeline); //新しい行をここに挿入
$sp = "ok"; //挿入済印
break; //走査中断
}
}
if (!isset($sp)) { //最も古い記事だった場合
array_push($log, $writeline); //最下行に書き込み
}

他には特に目新しい処理はしていませんので、全スクリプトをご覧になりたい方はダウンロードしてみてください。
なお実際運用する場合には書き込みをパスワードで制限すれば “いたずら” は考えにくいので、comment欄は “タグ許可”・“URL許可” にしたほうが使い勝手が良いでしょう。

“タグ許可” ・ “URL許可” の例 (書き込みは管理人のみ可)

この月間予定を こちら からzip形式でダウンロードできるようにしました。 お役立てください。

2014.2.4 last edit

Produced by haku