1行掲示板とは、その名の通り、ユーザーが1行づつコメントを残していく掲示板のことです。実際には、ホームページ訪問の足跡などに使われます。通常の掲示板、さらにはブログなども、基本的な部分は同じですので、勉強になると思います。
今回は、作りやすさも踏まえて、次のような仕様を考えました。
- 常に100行の文章が保存、表示される
- データベースは使わない
さて、今回は次の手順で作ります。
- ページが呼び出される
- 必要なデータを読み込む
- 新しいデータはと過去のデータを合わせて保存する
- データをHTMLでレイアウトして書き出す
- 入力フォームを用意しておく(HTML)
- 書き込みがあったら、データをPHPに送り、リロードする
【one_bbs.php】 ここで新しく使用した表記を説明します。
まずは冒頭に出てくるHTMLです。
<META http-equiv="content-type" content="text/html; charset=EUC-JP">
ここでは、最後のEUC-JPだけ注目してください。コンピューターの種類により違う漢字などの文字コードを指定しています。日本語を処理する場合、文字化けを防ぐための必需品です。PHPの場合、サーバーのディフォルトを変えない限りEUC-JPです。詳しくは言いませんが、HTMLの<head></head>の間に、この記述が必要だと、記憶して置いてください。
if($fp)
ファイルの読み書きは前項で書きましたが、ここで補足です。$fpは、ディスクに保管されたデータの場所を示しています。この数値がTrueであることは、ファイルが正常にオープンしたと言うことになります。
while( ! feof( $fp ) ){}
whileは、{}内を、条件が成り立っていれば繰返しをするものです。この繰返しは今回のポイントなので、詳しくは後述します。
feofは、「$fpで示したデータが終わりかどうか」を判断する関数です。これに否定形「!」が付いているので、データが終わりでなければ繰返しなさいという意味になります。
trim
trimとは、文字列の前後に不要な文字があったら取り除くという意味です。具体的には、空白、改行、タブなどを自動で取り除きます。プログラミングしていると、この手の関数がいかに重宝するかわかります。ここでは、そういうものだと覚えて置いてください。
array_unshift(配列変数,データ)
これは、配列の先頭に新しいデータを割り込ませる記述です。必須の関数ではありませんが、これを使わないとスクリプトが長くなるので、ここではあえて使いました。なお、新しいデータを追加ではなく、上部に割り込ませるのは、実際の表示にあわせたかったのと、一定以上の古い書き込みを削除する処理を解りやすくしたかったからです。