PHPで日記システムを作ってみる3

今回は、日記を一件フルに表示する部分を作成する。

まずは、DiaryNoneの

     <p>続きを読む</p>&nbsp;

の部分を

     <p>
     <a href="./?type=DispOne&id=<?php echo($row['id']) ?>">続きを読む</a>
     </p>&nbsp;

と書き換え、一件フル表示用のリンクを表示できるようにする。
リンク先のページは

<?php

require_once('./Diary.php');

class DiaryDispOne extends Diary
{
	private $id;	///< 表示する日記のID

	public function __construct()
	{
		if(array_key_exists('id', $_POST)) {
			$this->id = (int)$_POST['id'];
		} else if(array_key_exists('id', $_GET)) {
			$this->id = (int)$_GET['id'];
		} else {
			$this->id = -1;
		}
	}

	protected function Exec()
	{
		if($this->id == -1) {
			die('id エラー');
		}

		$this->Display();
	}

	protected function ShowAddBodyHead()
	{
?>
<a href="./">戻る</a>
<br />
<?php
	}

	protected function ShowLeftSide()
	{
		$sql = "select title, date, body from diary where id = {$this->id}";

		$this->ConnectDB();
		$result = $this->db->query($sql);

		if($result === FALSE) {
			$this->DBErrorDie();
		}

		foreach($result as $row) {
			$body = mb_ereg_replace("\n", "<br />\n", $row['body']);
?>
   <div class="element">
    <div class="title">
     <?php echo($row["title"]); ?>
    </div>
    <div class="date">
     <?php echo($row["date"]); ?>
    </div>
    <div class="body">
     <?php echo($body); ?>
    </div>
   </div>
   <br />
<?php
		}

		$this->ShowAddBodyHead();
	}
}

20行目からのExecメソッドでIDのチェックをし、表示を行う。
ページの構成は左側にメインを表示し、右側に最近の更新と、カレンダーを表示するで、統一となるので、その基本部分はDiaryNoneのDisplayメソッドに実装した。
Displayメソッドでは、それぞれ必要箇所で表示メソッドを呼ぶようにした。

	protected function Display()
	{
?>

<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <link rel="stylesheet" href="css/Base.css" type="text/css" />
  <title>日記</title>
  <?php $this->ShowAddHTMLHeader(); ?>
 </head>

 <body>
  <?php $this->ShowAddBodyHead(); ?>
  <div class="leftSide">
   <?php $this->ShowLeftSide(); ?>
  </div>

  <div class="rightSide">
   <div class="recent">
    最近の更新
   </div>
   <div class="calendar">
    カレンダー
   </div>
  </div>
 </body>
</html>

<?php
	}

	protected function ShowAddHTMLHeader()
	{
	}

	protected function ShowAddBodyHead()
	{
	}

	protected function ShowLeftSide()
	{
	}

ShowXXXメソッドは継承先で必要に応じて実装する。

これで、一件表示ができたので、次回はカレンダーや、細菌の更新部分の実装をしてみよう。

シリーズ:
PHPで日記システムを作ってみる1
PHPで日記システムを作ってみる2

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください