さあ、前のページで書き込んだファイルを表示する部分を見ていきましょう。
書き込んだデータを表示すればもう掲示板の説明は終わりです。
あとちょっとですので頑張りましょう!
<?php
// 記事表示部分
// 記事読み込み
if (file_exists($LOGFILE)) { … (1)
$lines = file($LOGFILE); … (2)
} else {
$lines = array(); … (3)
}
// 記事が1件以上保存されていたら
if (count($lines) > 0) { … (4)
for ($i=0; $i<count($lines); $i++) { … (5)
list($l_name,$l_message,$l_date) = split(",",$lines[$i]);… (6)
echo <<<EOM … (7)
$l_name - $l_message <$l_date><br>
EOM;
}
}
?>
※ 上記ソースはエディタでコピーペーストしても動作しないのでご注意を。
投稿フォームの後ぐらいに上記ソースがあります。
ソース内の番号について説明していきます。
(1) ログファイルが存在するかチェックします。存在しないのに読み込むとエラーになるのでここでチェックします。$LOGFILEはファイルの最初の方で定義しましたね。
(2) 表示用に、$file に file 関数で読み込みます。
ファイルに
あきら,こんにちは,2005/02/06 01:39
ひろし,こんにちは,2005/02/05 01:39
と保存されていた場合は
$file[0] → あきら,こんにちは,2005/02/06 01:39
$file[1] → ひろし,こんにちは,2005/02/05 01:39
という感じに格納されます。
(3) ファイルが存在しない場合は $file を空で初期化します。array() で配列型として空で初期化できます。
(4) ファイルを読み込んで、ファイルに1行以上保存されていたら表示開始です。countで配列の件数をカウントできるので これを if 文で判定します。
(5) 読み込んだファイル配列をすべて処理するために for 文で1行づつループさせます。
(6) ファイルの1行は$line[$i]で取得できるので、これをsplit関数をつかって名前、メッセージ、日付に再分割しましょう。書き込みの時点で1行にしてしまっているので、ここで3分割してどれが名前、メッセージ、日付、というのを分けることが出来ます。
split関数は非常によく使います。
split("区切り文字",$string) で $string を区切り文字で分割できます。ソースでは , (カンマ)区切りになっています。
名前,メッセージ,日付
を
split(",",$line[$i]) で
名前
メッセージ
日付
に分割できます。
(7) echo <<<EOM 〜 EOM; 部分はヒアドキュメントといい、その中に改行をいれて自由に文字列を入れることが出来ます。結構使いますので覚えておきましょう。
$l_name - $l_message <$l_date><br>
という指定で、
名前 - メッセージ<日付>で表示されます。
これで表示部分は実装することが出来ました。
以上で掲示板は出来上がってしまいました。
非常に簡単ですね。
あとは入力チェックなどを行えば実用出来そうですね。
ソースの確認 (文字化けの場合はブラウザのエンコード設定を変えてください)
スポンサードリンク
もどる