<?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>