teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

var_dumpで確認してみました

2019/08/30 06:23

投稿

KazuyaKojima
KazuyaKojima

スコア16

title CHANGED
File without changes
body CHANGED
@@ -82,5 +82,9 @@
82
82
  </body>
83
83
  </html>
84
84
  ```
85
+ var_dumpで値が入ってるか見たのですが入ってませんでした。。。
86
+ ![イメージ説明](8ca53746b5fe59d85b5c4a619f6a9c18.png)
87
+
88
+
85
89
  なぜかtextera内のnameを"message"から別の文字列に変えると$_POSTには値が入るのですがそれに合わせて一番最初のif文以下の$_POST[""]の中のmessageを変えるとまた値が入らなくなります。
86
90
  教科書通りに進めているのになぜだかここだけうまくいきません。。。。。

1

コード全文をのせました。よろしくお願いいたします・・・

2019/08/30 06:23

投稿

KazuyaKojima
KazuyaKojima

スコア16

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