
現在PHPの教材を使ってプログラムを組んでいるのですが$_POSTにうまく値が入ってくれません。
達成したいこと:
フォームに入力した値を同じページの下部に表示したい。
発生している問題:
フォームで入力した文章が$_POSTに入らずDBにINSERTできない
以下コード全文になります。
php
1<?php 2session_start(); 3require('dbconnect.php'); 4if (isset($_SESSION['id']) && $_SESSION['time'] + 3600 > time()) { 5 // ログインしている 6 $_SESSION['time'] = time(); 7 $members = $db->prepare('SELECT * FROM members WHERE id=?'); 8 $members->execute(array($_SESSION['id'])); 9 $member = $members->fetch(); 10} else { 11 // ログインしていない 12 header('Location: login.php'); 13 exit(); 14} 15// 投稿を記録する 16if (!empty($_POST)) { 17 if ($_POST['message'] != '') { 18 $message = $db->prepare('INSERT INTO posts SET member_id=?, message=?,created=NOW()'); 19 $message->execute(array( 20 $member['id'], 21 $_POST['message'] 22 )); 23 header('Location: index.php'); exit(); 24 } 25} 26// 投稿を取得する 27$posts = $db->query('SELECT m.name, m.picture, p.* FROM members m, posts p WHERE m.id=p.member_id ORDER BY p.created DESC'); 28?> 29<!DOCTYPE html> 30<html lang="ja"> 31<head> 32 <meta charset="UTF-8"> 33 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 34 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 35 <title>ひとこと掲示板</title> 36 37 <link rel="stylesheet" href="style.css" /> 38</head> 39 40<body> 41<div id="wrap"> 42 <div id="head"> 43 <h1>ひとこと掲示板</h1> 44 </div> 45 <div id="content"> 46 <form action="" method="post"> 47 <dl> 48 <dt><?php echo htmlspecialchars($member['name'], ENT_QUOTES); ?>さん、メッセージをどうぞ</dt> 49 <dd> 50 <textarea name="message" cols="50" rows="5"></textarea> 51 </dd> 52 </dl> 53 <div> 54 <input type="submit" value="投稿する" /> 55 </div> 56 </form> 57 58 <?php 59 foreach ($posts as $post): 60 ?> 61 <div class="msg"> 62 <img src="member_picture/<?php echo htmlspecialchars($post['picture'], ENT_QUOTES); ?>" width="48" height="48" alt="<?php echo htmlspecialchars($post['name'], ENT_QUOTES); ?>" /> 63 <p><?php echo htmlspecialchars($post['message'], ENT_QUOTES);?><span class="name">(<?php echo htmlspecialchars($post['name'], ENT_QUOTES); ?>)</span></p> 64 <p class="day"><?php echo htmlspecialchars($post['created'], ENT_QUOTES); ?></p> 65 </div> 66 <?php 67 endforeach; 68 ?> 69 </div> 70 71</div> 72</body> 73</html>
var_dumpで値が入ってるか見たのですが入ってませんでした。。。
なぜかtextera内のnameを"message"から別の文字列に変えると$_POSTには値が入るのですがそれに合わせて一番最初のif文以下の$_POST[""]の中のmessageを変えるとまた値が入らなくなります。
教科書通りに進めているのになぜだかここだけうまくいきません。。。。。




