<?php
try {
$pdo
= new PDO ('mysql:dbname=oneline_bbs;host=localhost;
charset=utf8mb4', 'root', 'root');
} catch (PDOException
$e) {
die('DB接続エラー' . $e->getMessage());
}
$errors = [];
if ($_POST) {
$name = trim(filter_input(INPUT_POST, 'name'));
$comment = trim(filter_input(INPUT_POST, 'comment'));
if (empty($name)) $errors[]
= '名前を入力してください';
if (empty($comment))
$errors[] = 'ひとことを入力してください';
if (mb_strlen($comment)
> 200) $errors[] = 'ひとことは200文字以内で入力してください';
if (!$errors) {
try {
$stmt
= $pdo->prepare('INSERT INTO `post` (`name`,
`comment`, `created_at`) VALUES (?, ?, ?)');
$stmt->execute([$name,
$comment, date('Y-m-d H:i:s')]);
} catch (PDOException $e) {
$errors[]
= 'データベースエラー';
}
}
if (!$errors)
header('Location: http://' .$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>ひとこと掲示板</title>
</head>
<body>
<h1>ひとこと掲示板</h1>
<form action=""
method="post">
名前: <input type="text"
name="name" /><br />
ひとこと: <input type="text"
name="comment" size="60" /><br
/>
<input type="submit"
name="submit" value="送信" />
</form>
<?= count($errors) ? '<ul class="error_list"><li>'
. implode('</li><li>', $errors) . '</li></ul>' : "" ?>
<hr>
<ul>
<?php
$stmt = $pdo->query('SELECT * FROM `post` ORDER BY `created_at` DESC');
foreach ($stmt as
$row)
printf('<li>(%s)%s
[%s]</li>',
htmlspecialchars($row['name'],ENT_QUOTES),
htmlspecialchars($row['comment'],ENT_QUOTES),
date('Y/m/d H:i:s', strtotime($row['created_at'])));
?>
</ul>
</body>
</html>