今回は、日記を一件フルに表示する部分を作成する。
<p>続きを読む</p>
の部分を
<p> <a href="./?type=DispOne&id=<?php echo($row['id']) ?>">続きを読む</a> </p>
と書き換え、一件フル表示用のリンクを表示できるようにする。
リンク先のページは
<?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メソッドは継承先で必要に応じて実装する。
これで、一件表示ができたので、次回はカレンダーや、細菌の更新部分の実装をしてみよう。