見出し画像

掲示板の作り方#15 スレッドページを作りこむ

こんにちは。Suipediaです(∩´∀`)∩。

前回はスレッドページの骨組み的なところを用意しました。

今回はいよいよメッセージを出力するところを作っていきましょう。

早速まいります!


今回のゴール

今回はぁ~・・・

01_完成形

この表示ができるようにします!



c.phpファイルの実装

前回お作りいただいたthreadフォルダのc.phpファイルを開いてください。

今、まっさらだと思います。そこに以下のソースを書きましょう。

<section class="threadDetail">
	<?php
		/** レスポンス一覧を取得する */
		$responseList = getResponseList($threadId);
		 
		if(count($responseList) == 0){
			p('このスレッドは存在しません。');
			return;
		}
	?>
	
	<h2><?php p($title); ?></h2>

	<div id="responseList">

	<?php
		/** レスポンス一覧を取得する */
		foreach($responseList as $response){
			outputResponse($response);		
		}
	?>

	</div>
	<input type="hidden" id="threadId" value="<?php p($threadId); ?>">
</section>

新しい関数が2つ出てきています。

・getResponseList($threadId);
・outputResponse($response);

この2つです。この関数は後で実装するとして、一旦処理の流れをザっとさらってしまいますね。


まず最初のタイトルを出す前のソース。

<section class="threadDetail">
	<?php
		/** レスポンス一覧を取得する */
		$responseList = getResponseList($threadId);
		 
		if(count($responseList) == 0){
			p('このスレッドは存在しません。');
			return;
		}
	?>

最初のsectionタグはレスポンス表示部分を覆うエリアです。

次にレスポンスをリストで取得する関数を使っています(後述)。

で、次にif文が出てきました。これはですね、リストで取得したメッセージリストの件数をcount()で調べています。前回MySQLのカウント関数を紹介しましたが、これはPHPのカウント関数です。

件数が0だったらスレッドは存在しないというメッセージを出して処理を終了させます。

そんなケースあるのか?

と思った方がいるかもしれません。通常、トップページのスレッドリストから選択してくるんだからそんなことはないだろう、と。

ところがどっこいあるんです。セキュリティ的な観点で考えてみてください。

ブラウザのアドレスバーに直接「http://localhost/thread/1234/」と打ち込んだりするとスレッドID:1234のスレッドを開こうとすることができるんです。

ただし、これはいわゆる不正なアクセスです。

こういうのの受け皿として上記の実装があります。


続きまして

	<h2><?php p($title); ?></h2>

	<div id="responseList">

	<?php
		/** レスポンス一覧を取得する */
		foreach($responseList as $response){
			outputResponse($response);		
		}
	?>

	</div>

このソースですね。ここではブラウザタブに出しているものと同じタイトルを画面上にも表示し、そこからはレスポンスを順番に出力していきます。

divタグがあるのはスタイルを付与するためですね。

そして、先ほど取得したリストを1件ずつループ処理しています。中で呼びだしている出力関数はあとで実装しましょう。


最後に

	<input type="hidden" id="threadId" value="<?php p($threadId); ?>">
</section>

typeにhiddenを指定した要素のvalue属性にスレッドIDを設定しています。これはレスポンスの登録時にサーバ側に渡すためです。

で、sectionを閉じて終わりです。


さて、それでは2つの関数を実装します。


関数:getResponseList()の実装

以下のソースをfunction.phpに追加してください。

ここから先は

5,197字 / 7画像
この記事のみ ¥ 200

この記事が気に入ったらサポートをしてみませんか?