blog system

CREATE TABLE post (
	no SERIAL,
	title TEXT,
	content TEXT,
	time TIMESTAMP
);
CREATE TABLE comment (
	no SERIAL,
	post_no INT,
	name TEXT,
	content TEXT,
	time TIMESTAMP
);
INSERT INTO post(no,title,content) VALUES(1,'記事1タイトル','記事1の内容です。');
INSERT INTO post(no,title,content) VALUES(2,'記事2タイトル','記事2の内容です。');
INSERT INTO comment(no,post_no,name,content) VALUES(1,1,'たろう','記事1へのコメントです。');
INSERT INTO comment(no,post_no,name,content) VALUES(2,1,'はなこ','記事1へのコメントです。');

css

body {
  background-color:#f77;
  font-size: 14px;
  font-family: Helvetica,Arial, sans-serif;
}
a:link, a:visited {color: #a00;}
a:hover {color: #fca;}
p {
  margin: 0;
  padding: 0;
}
h1 {
  margin: 10px 0;
  padding: 0;
  color: white;
  font-size: 32px;
  text-align: center;
}
h2 {
  margin: 0 -20px 10px -20px;
  padding: 5px 10px;
  background-color: #379;
  color: white;
  font-size: 18px;
}
h3 {
  margin: 0 -15px 10px -15px;
  padding: 5px 10px;
  background-color: #a55;
  color: white;
  font-size: 14px;
}
.post {
  width: 500px;
  margin: 0 auto 15px auto;
  padding: 0 20px 20px 20px;
  background-color: #fb0;
}
.comment {
  margin: 10px 0;
  padding: 0 15px 15px 15px;
  background-color: #da7;
}
.comment_link {
  text-align: right;
}
<!DOCTYPE>
<html>
<head>
    <meta charset="utf-8">
    <title>special blog</title>
    <link rel="stylesheet" href="blog.css">
</head>
<body>
  <h1>Special Blog</h1>
  <div class="post">
    <h2>記事1のタイトルです</h2>
    <p>記事1の本文です。<br>
      記事1の本文です。<br>
    </p>
    <div class="comment">
      <h3>通りすがり1</h3>
      <p>
        記事1へのコメントです。<br>
        記事1へのコメントです。<br>
      </p>
    </div>
    <div class="comment">
      <h3>通りすがり2</h3>
      <p>
        記事1へのコメントです。
      </p>
    </div>
    <p class="comment_link">
      投稿日:2016/12/19
      <a href="#">コメント</a>
    </p>
  </div>
</body>
</html>

index

<?php
  $pdo = new PDO("mysql:dbname=test", "root");
  $st = $pdo->query("SELECT * FROM post ORDER BY no DESC");
  $posts = $st->fetchAll();
  for ($i = 0; $i < count($posts); $i++) {
    $st = $pdo->query("SELECT * FROM comment WHERE post_no={$posts[$i]['no']} ORDER BY no DESC");
    $posts[$i]['comments'] = $st->fetchAll();
  }
  require 't_index.php';
?>

t_index.php

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Special Blog</title>
<link rel="stylesheet" href="blog.css">
</head>
<body>
<h1>Special Blog</h1>
<?php foreach ($posts as $post) { ?>
  <div class="post">
    <h2><?php echo $post&#91;'title'&#93; ?></h2>
    <p><?php echo nl2br($post&#91;'content'&#93;) ?></p>
    <?php foreach ($post&#91;'comments'&#93; as $comment) { ?>
      <div class="comment">
        <h3><?php echo $comment&#91;'name'&#93; ?></h3>
        <p><?php echo nl2br($comment&#91;'content'&#93;) ?></p>
      </div>
    <?php } ?>
    <p class="commment_link">
      投稿日:<?php echo $post&#91;'time'&#93; ?> 
      <a href="comment.php?no=<?php echo $post&#91;'no'&#93; ?>">コメント</a>
    </p>
  </div>
<?php } ?>
</body>
</html>

post

<?php
  $error = $title = $content = '';
  if (@$_POST&#91;'submit'&#93;){
    $title = $_POST&#91;'title'&#93;;
    $content = $_POST&#91;'content'&#93;;
    if (!$title) $error .= 'タイトルがありません。<br>';
    if (mb_strlen($title) > 80) $error .= 'タイトルが長すぎます。<br>';
    if (!$content) $error .= '本文がありません。<br>';
    if (!$error) {
      $pdo = new PDO("mysql:dbname=test", "root");
      $stmt = $pdo->query("INSERT INTO post(title,content) VALUES('$title','$content')");
      header('Location: index.php');
      exit();
    }
  }
require 't_post.php';
?>

post_t.php

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>記事投稿| Special Blog</title>
  <link rel="stylesheet" href="blog.css">
</head>
<body>
  <form method="post" action="post.php">
    <div class="post">
      <h2>記事投稿</h2>
      <p>題名</p>
      <p><input type="text" name="title" size="40" value="<?php echo $title ?>"></p>
      <p>本文</p>
      <p><textarea name="content" rows="8" cols="40"><?php echo $content ?></textarea></p>
      <p><input name="submit" type="submit" value="投稿"></p>
      <p><?php echo $error ?></p>
    </div>
  </form>
</body>
</html>

comment

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>コメント投稿 | Special Blog</title>
<link rel="stylesheet" href="blog.css">
</head>
<body>
<form method="post" action="comment.php">
  <div class="post">
    <h2>コメント投稿</h2>
    <p>お名前</p>
    <p><input type="text" name="name" size="40" value="<?php echo $name ?>"></p>
    <p>コメント</p>
    <p><textarea name="content" rows="8" cols="40"><?php echo $content ?></textarea></p>
    <p>
      <input type="hidden" name="post_no" value="<?php echo $post_no ?>">
      <input name="submit" type="submit" value="投稿">
    </p>
    <p><?php echo $error ?></p>
  </div>
</form>
</body>
</html>

comment_t

<?php
  $post_no = $error = $name = $content = '';
  if (@$_POST&#91;'submit'&#93;) {
    $post_no = strip_tags($_POST&#91;'post_no'&#93;);
    $name = strip_tags($_POST&#91;'name'&#93;);
    $content = strip_tags($_POST&#91;'content'&#93;);
    if (!$name) $error .= '名前がありません。<br>';
    if (!$content) $error .= 'コメントがありません。<br>';
    if (!$error) {
      $pdo = new PDO("mysql:dbname=test", "root");
      $st = $pdo->prepare("INSERT INTO comment(post_no,name,content) VALUES(?,?,?)");
      $st->execute(array($post_no, $name, $content));
      header('Location: index.php');
      exit();
    }
  } else {
    $post_no = strip_tags($_GET['no']);
  }
  require 't_comment.php';
?>