PHPプログラミング

最終更新日:
公開日:

ワークショップ

ひと言掲示板を作る(6)

投稿完了メッセージを表示する

「ひと言掲示板」にメッセージを投稿すると「メッセージを書き込みました。」と成功メッセージを表示する機能を付けます。

この記事のポイント

  • 投稿があった場合のみメッセージを表示する
  • empty関数で表示するメッセージがあるかを確認する

目次

メッセージが無事に投稿できたことを知らせる

前回までで、掲示板の基本機能である「書き込む」と「読み込む」機能を作りました。
今回からは少しずつ掲示板の使い勝手をよくする機能を付けていきます。

まずは投稿が完了したときにメッセージを表示するようにして、ユーザーが投稿が無事に行えたかを分かりやすくする機能を作成します。

「ひと言掲示板を作る」の概要については「ひと言掲示板を作る」をご覧ください。
デモはこちら

前回までに作成したコードはこちら:Github

投稿完了メッセージを用意する

まずは投稿されたメッセージをファイルに書き込んだ後に、表示したいメッセージを変数に入れて用意します。
今回は$success_messageにメッセージを入れていきます。

次の赤字のコードを追記してください。

index.php

<?php

---- 省略 ----

// 変数の初期化
$current_date = null;
$data = null;
$file_handle = null;
$split_data = null;
$message = array();
$message_array = array();
$success_message = null;

if( !empty($_POST['btn_submit']) ) {
	
	if( $file_handle = fopen( FILENAME, "a") ) {

		// 書き込み日時を取得
		$current_date = date("Y-m-d H:i:s");
	
		// 書き込むデータを作成
		$data = "'".$_POST['view_name']."','".$_POST['message']."','".$current_date."'\n";
	
		// 書き込み
		fwrite( $file_handle, $data);
	
		// ファイルを閉じる
		fclose( $file_handle);

		$success_message = 'メッセージを書き込みました。';
	}		
}

---- 省略 ----

$success_messageにはファイルへの書き込みがあった場合のみ値が代入されるため、こちらの変数に値が入っているか調べることでメッセージを表示するか判断することができます。

HTMLにメッセージ出力を設定する

続いて、HTML部分にメッセージがある場合に表示するよう設定していきましょう。
次の赤字のコードを追記してください。

index.php

<?php

---- 省略 ----

<body>
<h1>ひと言掲示板</h1>
<?php if( !empty($success_message) ): ?>
    <p class="success_message"><?php echo $success_message; ?></p>
<?php endif; ?>
<form method="post">
	<div>
		<label for="view_name">表示名</label>
		<input id="view_name" type="text" name="view_name" value="">
	</div>
	<div>
		<label for="message">ひと言メッセージ</label>
		<textarea id="message" name="message"></textarea>
	</div>
	<input type="submit" name="btn_submit" value="書き込む">
</form>

---- 省略 ----

empty関数$success_messageに値が入っているかを確認します。
empty関数は値が空(入っていない)の場合にtrueを返しますが、今回は逆に値が入っていたらtrueとしたいため関数の前に「!」を付けています。
この使い方は書き込みボタンが押されたかどうかを調べる方法と全く同じです。

以上で、メッセージの投稿があってファイルへの保存が完了した場合に次のようなメッセージが表示されるようになりました。

次回は「表示名」と「メッセージ」がきちんと入力されているかを確認する「バリデーション」の機能を付けていきます。

今回作成したコード:Github