投稿機能を回復させたい
〜詳しい内容〜
データベースとPHPを使って、『よくわかるPHPの教科書』の一言掲示板を作っています。
はじめ投稿はしっかり機能していたのですが、返信機能をつけた途端に投稿できなくなってしまいました。(返信することだけはできます。)
返信機能と投稿機能があやしいと疑って隅々まで見てみましたが、一向に改善されません。
どこが間違えているのか教えていただけたら幸いです。
該当のソースコード
PHP
1ソースコード 2<?php 3 session_start(); 4 5 require('../dbconnect.php'); 6 7 if(isset($_SESSION['id']) && $_SESSION['time']+3600>time()){ 8 $_SESSION['time']=time(); 9 10 $members=$db->prepare('SELECT * FROM a_word.members WHERE id=?'); 11 $members->execute(array($_SESSION['id'])); 12 $member=$members->fetch(); 13 }else{ 14 //ログインしていない 15 header('Location: ../login/login.php'); 16 exit(); 17 } 18 19 //投稿を記録する 20 if(!empty($_POST)){ 21 if($_POST['message'] !==""){ 22 $message=$db->prepare('INSERT INTO a_word.posts SET message=?, member_id=?, reply_post_id=?, created=NOW()'); 23 $message->execute(array($_POST['message'], $member['id'], $_POST['reply_post_id'])); 24 25 header('Location: index.php'); 26 exit(); 27 } 28 } 29 30 //投稿を取得する 31 $posts=$db->query('SELECT m.name, m.picture, p.* FROM a_word.members m, a_word.posts p WHERE m.id=p.member_id ORDER BY p.created DESC'); 32 33 //返信の場合 34 if(isset($_GET['res'])){ 35 $response=$db->prepare('SELECT m.name, m.picture, p.* FROM a_word.members m, a_word.posts p WHERE m.id=p.member_id AND p.id=? ORDER BY p.created DESC'); 36 $response->execute(array($_GET['res'])); 37 38 $table=$response->fetch(); 39 $message="【@{$table['name']}、\t{$table['message']}】\n\n"; 40 } 41 42//htmlspecialcharsのショートカット 43 function h($value){ 44 return htmlspecialchars($value, ENT_QUOTES); 45 } 46?> 47 48<!DOCTYPE html> 49<html lang="ja"> 50 <head> 51 <meta charset="utf-8"> 52 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 53 <link rel="stylesheet" href="../css/style.css"> 54 <title>ア ワード</title> 55 </head> 56 <body> 57 <header> 58 <h2>投稿する</h2> 59 </header> 60 <main> 61 <form action="" method="post"> 62 <dl> 63 <dt><?php echo h($member['name']); ?>さん、メッセージをどうぞ</dt> 64 <dd> 65 <textarea name="message" rows="8" cols="80"><?php echo h($message); ?></textarea> 66 <input type="hidden" name="reply_post_id" value="<?php echo h($_GET['res']); ?>"> 67 </dd> 68 </dl> 69 <input type="submit" value="投稿する"> 70 </form> 71 <?php foreach($posts as $post): ?> 72 <hr> 73 <div class="msg"> 74 <img src="../member_picture/<?php echo h($post['picture']); ?>" width="48" height="48" alt="<?php echo h($post['name']); ?>"> 75 <p> 76 <?php echo h($post['message']); ?> 77 <span>(<?php echo h($post['name']); ?>)</span> 78 【<a href="index.php?res=<?php echo h($post['id']); ?>">Re</a>】 79 </p> 80 <p><a href="../private/view.php?id=<?php echo h($post['id']) ?>"><?php echo h($post['created']); ?></a></p> 81 <?php if($post['reply_post_id']>0): ?> 82 <a href="../private/view.php?id=<?php echo h($post['reply_post_id']); ?>">返信元のメッセージ</a> 83 <?php endif; ?> 84 </div> 85 <?php endforeach; ?> 86 </main> 87 </body> 88</html>
回答2件
あなたの回答
tips
プレビュー