入力した値が$_POSTに入ってそれを取得してmysql文でインサートするという流れはできているはずなのですがDBを見てみると値がありません。
reply_post_idがあるせいなのかとも思い一度消して見ましたが関係ありませんでした。
php
1//index.php 2<?php 3session_start(); 4require('dbconnect.php'); 5 6if (isset($_SESSION['id']) && $_SESSION['time'] + 3600 > time()) { 7 //ログインしている 8 $_SESSION['time'] = time(); 9 10 $members = $db->prepare('SELECT * FROM members where id=?'); 11 $members->execute(array($_SESSION['id'])); 12 $member = $members->fetch(); 13} else { 14 //ログインしていない 15 header('Location: login.php'); exit(); 16} 17 18//投稿を記録する 19if (!empty($_POST)) { 20 if ($_POST['message'] != '') { 21 $message = $db->prepare('INSERT INTO posts set member_id=?, message=?, reply_post_id=?, created=NOW()'); 22 $message->execute(array( 23 $member['id'], 24 $_POST['message'], 25 $_POST['reply_post_id'] 26 )); 27 28 header('Location: index.php'); exit(); 29 } 30} 31 32//投稿を取得する 33$page = $_REQUEST['page']; 34if ($page == '') { 35 $page = 1; 36} 37$page = max($page, 1); 38 39//最終ページを取得する 40$counts = $db->query('SELECT COUNT(*) AS cnt FROM posts'); 41$cnt = $counts->fetch(); 42$maxPage = ceil($cnt['cnt'] / 5); 43$page = min($page, $maxPage); 44 45$start = ($page - 1) * 5; 46 47$posts = $db->prepare('SELECT m.name, m.picture, p.* FROM members m, posts p where m.id=p.member_id ORDER BY p.created DESC LIMIT ?, 5'); 48$posts->bindParam(1, $start, PDO::PARAM_INT); 49$posts->execute(); 50 51//返信の場合 52if (isset($_REQUEST['res'])) { 53 $response = $db->prepare('SELECT m.name, m.picture, p.* FROM members m, posts p where m.id=p.member_id AND p.id=? ORDER BY p.created DESC'); 54 $response->execute(array($_REQUEST['res'])); 55 56 $table = $response->fetch(); 57 $message = '@' . $table['name'] . ' ' . $table['message']; 58} 59 60//htmlspecialcharsのショートカット 61function h($value) { 62 return htmlspecialchars($value, ENT_QUOTES); 63} 64 65//本文内のURLにリンクを設定します 66function makeLink($value) { 67 return mb_ereg_replace("(https?)(://[[:alnum:]+$\;?.%,!#~*/:@&=_-]+)", '<a href="\1\2">\1\2</a>', $value); 68} 69 70?> 71 72<!DOCTYPE html> 73<html lang="ja"> 74<head> 75 <meta charset="UTF-8"> 76 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 77 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 78 <title>ひとこと掲示板</title> 79 80 <link rel="stylesheet" href="style.css" /> 81</head> 82 83<body> 84<div id="wrap"> 85 <div id="head"> 86 <h1>ひとこと掲示板</h1> 87 </div> 88 <div id="content"> 89 <div style="text-align: right"><a href="logout.php">ログアウト</a></div> 90 <form action="" method="post"> 91 <dl> 92 <dt><?php echo h($member['name']); ?>さん、メッセージをどうぞ</dt> 93 <dd> 94 <textarea name="message" cols="50" rows="5"><?php echo makeLink(h($message)); ?></textarea> 95 <input type="hidden" name="reply_post_id" value="<?php echo h($_REQUEST['res']); ?>" /> 96 </dd> 97 </dl> 98 <div> 99 <input type="submit" value="投稿する" /> 100 </div> 101 </form> 102 <?php 103 foreach ($posts as $post): 104 ?> 105 <div class="msg"> 106 <img src="member_picture/<?php echo h($post['picture']); ?>" width="48" height="48" alt="<?php echo h($post['name']); ?>" /> 107 <p><?php echo h($post['message']); ?><span class="name">(<?php echo h($post['name']); ?>)</span>[<a href="index.php?res=<?php echo h($post['id']); ?>">Re</a>]</p> 108 <p class="day"><a href="view.php?id=<?php echo h($post['id']); ?>"><?php echo h($post['created']); ?></a></p> 109 <?php 110 if ($post['reply_post_id'] > 0): 111 ?> 112 <a href="view.php?id=<?php echo h($post['reply_post_id']); ?>">返信元のメッセージ</a> 113 <?php 114 endif; 115 ?> 116 <?php 117 if ($_SESSION['id'] == $post['member_id']): 118 ?> 119 [<a href="delete.php?id=<?php echo h($post['id']); ?>" style="color: #f33">削除</a>] 120 <?php 121 endif; 122 ?> 123 </div> 124 <?php 125 endforeach; 126 ?> 127 <ul class="paging"> 128 <?php 129 if($page > 1) { 130 ?> 131 <li><a href="index.php?page=<?php echo $page - 1; ?>">前のページへ</a></li> 132 <?php 133 } else { 134 ?> 135 <li>前のページへ</li> 136 <?php 137 } 138 ?> 139 <?php 140 if ($page < $maxPage) { 141 ?> 142 <li><a href="index.php?page=<?php echo $page + 1; ?>">次のページへ</a></li> 143 <?php 144 } else { 145 ?> 146 <li>次のページへ</li> 147 <?php 148 } 149 ?> 150 </ul> 151 </div> 152 153</div> 154</body> 155</html> 156
php
1//dbconnect.php 2<?php 3try { 4 $db = new PDO('mysql:dbname=mini_bbs;host=localhost;charset=utf8', 'root', 'root'); 5} catch (PDOException $e) { 6 echo 'DB接続エラー:' . $e->getMessage(); 7} 8?> 9 10コード
回答2件
あなたの回答
tips
プレビュー