前提・実現したいこと
投稿画面に一覧も一緒に表示させたい
現在、PHPで掲示板を作成しています。
投稿ページに一覧を表示したいのですが、現状フォームに入力をしないと一覧が表示されない状態なので入力する前から一覧を表示する方法・ヒント・この知識が必要などアドバイスをいただけないでしょうか。
現状 トップページ(ここの部分に最初から一覧ページを表示させたいのです)
フォームに入力後
該当のソースコード
トップページ
PHP
1<!DOCTYPE html> 2<html lang="ja"> 3 4<head> 5 <meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width,initial-scale=1"> 7 <title>掲示板(仮)</title> 8</head> 9 10<body> 11 <h1>掲示板(仮)</h1> 12 <form action="create.php" method="POST"> 13 <?php if (count($errors) > 0) : ?> 14 <?php foreach ($errors as $error) : ?> 15 <li><?php echo $error; ?></li> 16 <?php endforeach; ?> 17 <?php endif; ?> 18 <div> 19 <label for="nickname">ニックネーム</label> 20 <input type="text" name="nickname" id="nickname" value="<?php echo $board['nickname'] ?>"> 21 </div> 22 <div> 23 <label for="message">書き込む</label> 24 <textarea type="text" name="message" id="message" placeholder="140字までになります" maxlength="140" rows="6" cols="50"><?php echo $board['message'] ?></textarea> 25 </div> 26 <button type="submit">投稿</button> 27 </form> 28 <main> 29 <?php foreach ($list as $value) : ?> 30 <div><?php echo ($value['id']); ?></div> 31 <div><?php echo h($value['nickname']); ?></div> 32 <div><?php echo h($value['message']); ?></div> 33 <div><a href="reply_message.php?id=<?php echo ($value['id']); ?>">コメント : </a><?php echo h($value['reply_message']); ?></div> 34 <div><?php echo $value['created']; ?></div> 35 <?php endforeach; ?> 36 </main> 37</body> 38 39</html> 40
<?php require 'dbconnect.php'; require 'escape.php'; //データ登録 function createBoard($db) { $statement = $db->prepare('INSERT INTO posts SET nickname=?, message=?,created=NOW()'); $statement->execute(array($_POST['nickname'], $_POST['message'])); //header('Location: create.php'); } //バリデーション処理 function validate($board) { $errors = []; if (!strlen($board['nickname'])) { $errors['nickname'] = 'ニックネームを入力してください'; } if (!strlen($board['message'])) { $errors['message'] = '投稿が未入力です'; } return $errors; } function listBoard($db) { //データベースの取り出し $list = []; //データ取得 $sql = $db->query('SELECT * FROM posts ORDER BY id DESC'); while ($posts = $sql->fetch()) { $list[] = $posts; } return $list; } if ($_SERVER['REQUEST_METHOD'] === 'POST') { $board = [ 'nickname' => $_POST['nickname'], 'message' => $_POST['message'], //'reply_message_id' => $_POST['reply_message_id'] ]; $errors = validate($board); if (!count($errors)) { $db = dbConnect(); createBoard($db); $list = listBoard($db); } } include 'board.php';
試したこと
色々調べたのですがどうしていいか分からずにいます。
決して丸投げしたいわけではなく対処の仕方がわからず時間がかかりすぎているため今回質問いたしました。
お忙しい所恐れ入りますが何卒よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/11 23:03
2021/01/12 05:51