スレッド表示 | フラット表示〕 全トピック 923 件中 39 番目 次≫ ≪前

php掲示板を改造しています。

created: 2008-09-29 04:19 | modified: 2008-10-16 19:11 | reply: 8

[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 に該当するレコードが無かった場合
// 何らかの処理もしくは何もしない
}

// 終了:更新フォームに戻るなどの画面移管
Parent: 4236  reply: 4238 返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 923 件中 39 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑