php掲示板を改造しています。
created: 2008-09-29 04:19 | modified: 2008-10-16 19:11 | reply: 8
[4234] php掲示板を改造しています。 - wes - 2008-09-29 04:19- [4235] Re. php掲示板を改造しています。 - ゆうじ - 2008-09-30 18:20
- [4236] ゆうじさん返信ありがとうございます。 - wes - 2008-10-01 06:21
- [4237] ログファイルの更新 - ゆうじ - 2008-10-01 19:55
- [4238] ゆうじさん本当に感謝いたします。 - wes - 2008-10-02 00:59
- [4242] チェックボックスとボタン - wes - 2008-10-05 20:41
- [4244] Re. チェックボックスとボタン - ゆうじ - 2008-10-08 01:14
- [4245] ありがとうございます。 - wes - 2008-10-08 08:21
- [4246] やっとなんとか・・・ - wes - 2008-10-16 19:11
[4237] ログファイルの更新
user: ゆうじ | created: 2008-10-01 19:55
$_POST の値の妥当性チェックとか
ファイルのロックとか省いてますが
こんな感じの処理になるかと思います。
ファイルのロックとか省いてますが
こんな感じの処理になるかと思います。
// ログファイル名
$filename = '/home/user/data/log.cgi';
// 更新対象レコードの$noを $_POST['no'] で初期化
$no = $_POST['no'];
// 更新対象レコードの$hyoujiを初期化
// CheckBoxなので$_POST['hyouji']の真偽を取る
$hyouji = ($_POST['hyouji']) ? 1: 0;
// ログファイルを丸ごと読み込み
$records = file($filename);
// レコード数を初期化
$recCount = count($records);
// 1行ずつレコードを走査
for ($line = 0; $line < $recCount; $line++) {
// 1レコード分のテキストを , で配列に分割
$record = explode(',', $records[$line]);
// $recordの始めの値と$noを比較して対象レコードか判定
if ($record[0] == $no) {
// $recordの2番目の値を$hyoujiで初期化
$record[1] = $hyouji;
// , で連結して $record を配列から文字列に変換し
// $recordsの該当行を書き換える
$records[$line] = implode(',' $record);
// 強制的にループを抜ける
break;
}
}
// 更新対象レコードがあれば、強制的にループを
// 抜けてるので $line は $recCount より小さいはず
if ($line < $recCount) {
// $records を連結してひとつのテキストにする
$records = implode('', $records);
// テキストの $records を ログファイルに書き込む
file_put_contents('log.cgi', $records); // PHP5以降
} else {
// $no に該当するレコードが無かった場合
// 何らかの処理もしくは何もしない
}
// 終了:更新フォームに戻るなどの画面移管
