質問編集履歴

7

タイトル変更

2022/05/27 08:13

投稿

t_sssaito
t_sssaito

スコア0

test CHANGED
@@ -1 +1 @@
1
- データベース投稿内容を登録し
1
+ DBへの接続はできているのに、データをDBに登録できない理由を教えて欲しいです。
test CHANGED
File without changes

6

追記項目の削除

2022/05/27 05:43

投稿

t_sssaito
t_sssaito

スコア0

test CHANGED
File without changes
test CHANGED
@@ -124,27 +124,6 @@
124
124
 
125
125
 
126
126
 
127
- **追記**
128
- コメントを参考にして実行時でもエラー表示が出ないかを確認するため、以下のコードをdbconnect.phpに書きましたが、具体的な解決策は分かりませんでした。
129
- ```php
130
- <?php
131
- try {
132
- $pdo = new PDO(
133
- 'mysql:dbname=mydb;host=localhost;charset=utf8',
134
- 'root',
135
- 'root',
136
- [
137
- PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
138
- PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
139
- ]
140
- );
141
- } catch (PDOException $e) {
142
- exit($e->getMessage());
143
- }
144
- ?>
145
- ```
146
-
147
-
148
127
  **開発環境**
149
128
  使っているPC : Mac
150
129
  開発言語   :PHP7

5

質問文の変更

2022/05/27 05:42

投稿

t_sssaito
t_sssaito

スコア0

test CHANGED
File without changes
test CHANGED
@@ -1,15 +1,4 @@
1
1
  **質問内容**
2
- dbconnect.phpでデータベースへの接続を確認しました。
3
- ```php
4
- <?php
5
- try {
6
- $db =new PDO('mysql:dbname =mydb;host=localhost','root','root');
7
- } catch (PDOException $e) {
8
- echo 'DB接続エラー'.$e->getMessage();
9
- }
10
- ?>
11
- ```
12
-
13
2
  check.phpにて、index.phpより受け取ったデータを確認し、データベースへ投稿しようとしています。
14
3
 
15
4
  ```php
@@ -39,8 +28,6 @@
39
28
  $error['rewrite'] = true;
40
29
  }
41
30
  ?>
42
-
43
-
44
31
 
45
32
  <p>次のフォームを入力してください</p>
46
33
  <form action="index.php" method="post" enctype="multipart/form-data">
@@ -116,8 +103,24 @@
116
103
  ```
117
104
  ↑check.php
118
105
 
106
+
107
+
108
+ dbconnect.phpでデータベースへの接続を確認しました。
109
+ ```php
110
+ <?php
111
+ try {
112
+ $db =new PDO('mysql:dbname =mydb;host=localhost','root','root');
113
+ } catch (PDOException $e) {
114
+ echo 'DB接続エラー'.$e->getMessage();
115
+ }
116
+ ?>
117
+ ```
118
+
119
119
  check.phpの画面で登録ボタンを押しても、データベースへの接続エラーは出ませんでしたが、データ内容を登録できませんでした。
120
120
  解決策があればご教示お願いいたします。
121
+
122
+ データベースのテーブル名、画像も添付いたします
123
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-27/a1eb624a-c668-4b92-ba53-d5f94dbe6200.png)
121
124
 
122
125
 
123
126
 

4

質問文の変更

2022/05/27 05:38

投稿

t_sssaito
t_sssaito

スコア0

test CHANGED
File without changes
test CHANGED
@@ -136,12 +136,8 @@
136
136
  ]
137
137
  );
138
138
  } catch (PDOException $e) {
139
-
140
- header('Content-Type: text/plain; charset=UTF8', true, 500);
141
139
  exit($e->getMessage());
142
140
  }
143
-
144
- header('Content-Type: text/html; charset=utf8');
145
141
  ?>
146
142
  ```
147
143
 

3

質問文の変更

2022/05/27 05:29

投稿

t_sssaito
t_sssaito

スコア0

test CHANGED
File without changes
test CHANGED
@@ -1,77 +1,150 @@
1
1
  **質問内容**
2
- 「よくわかるphpの教科書」という教材使って勉強てい
2
+ dbconnect.phpでデータベースへ接続確認しました
3
+ ```php
4
+ <?php
5
+ try {
6
+ $db =new PDO('mysql:dbname =mydb;host=localhost','root','root');
7
+ } catch (PDOException $e) {
3
- 簡単な投稿掲示板を作ろうとしているのですが、デタベースに投稿内容を登録できないので、解決方法をご教示よろしくお願いいたします。
8
+ echo 'DB接続エラ'.$e->getMessage();
9
+ }
10
+ ?>
11
+ ```
4
12
 
5
- 現状を説明させていただきます。
6
- 1、最初に以下のような画面が出てきます。(1時間以内にログインの記録がなければログイン画面から)
7
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-25/f58044b2-ff5f-47e9-a8c1-d65bc897b431.png)
8
- 2文章を打ち込み「投稿ボ押す」と文章の内容がpostsテブルのmessageに登録されるようになっています。
13
+ check.phpにてindex.phpより受け取ったデータを確認しタベースへ投稿しようとしています。
9
- 3、1の画面が再度出てきます。phpmyadminで確認するとmessageにデータが入っていませんでした。
10
14
 
11
-
12
- **データベースの情報**
13
-
14
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-25/41170ecb-28f8-417c-b08a-a8809b873ed3.png)
15
-
16
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-05-25/3b0dd204-f8bc-4409-8bd1-6e9f1486bd04.png)
17
- idは共にプライマリーキー、オートインクリメントになっています。
18
-
19
- **書いたプログラミング**
20
- ```PHP
15
+ ```php
21
16
  <?php
22
17
  session_start();
23
- require('dbconnect.php');
24
- //データベースへの接続。正常にできています。
25
18
 
26
- if (isset($_SESSION['id']) && $_SESSION['time'] + 3600 > time()) {
27
- //ログインしている状態
19
+ if (!empty($_POST)) {
28
- $_SESSION['time'] =time();
20
+ if ($_POST['name']=='') {
21
+ $error['name']='blank';
22
+ }
23
+ if ($_POST['email']=='') {
24
+ $error['email']='blank';
25
+ }
26
+ if ($_POST['password']=='') {
27
+ $error['password']='blank';
28
+ }
29
29
 
30
- $members =$db->prepare('SELECT * FROM members WHERE id=?');
31
- $members ->execute(array($_SESSION['id']));
32
- $member = $members->fetch();
33
- }else {
34
- //ログインしていない状態
35
- header('Location: login.php');exit();
36
- }
37
-
38
-
39
- //投稿を記録する
40
- if (!empty($_POST)) {
30
+ if (empty($error)) {
41
- if ($_POST['message'] !='') {
42
- $message = $db->prepare('INSERT INTO posts SET member_id=?, message=?, created=NOW()');
43
- $message ->execute(array(
44
- $member['id'],
31
+ $_SESSION['join']=$_POST;
45
- $_POST['message']
46
- ));
47
- header('Location: index.php');
32
+ header('Location: check.php');
48
33
  exit();
49
34
  }
50
35
  }
36
+
37
+ if ($_REQUEST['action']=='rewrite') {
38
+ $_POST=$_SESSION['join'];
39
+ $error['rewrite'] = true;
40
+ }
51
41
  ?>
52
42
 
53
- <!DOCTYPE html>
54
43
 
44
+
45
+ <p>次のフォームを入力してください</p>
55
- <form action="" method="post">
46
+ <form action="index.php" method="post" enctype="multipart/form-data">
56
47
  <dl>
57
- <dt><?php echo htmlspecialchars($member['name'],ENT_QUOTES);?>メッセージをどうぞ</dt>
48
+ <dt>名前<span class="required">必須</span></dt>
49
+ <dd><input type="text" name="name" size="35" maxlength="255" value="<?php echo htmlspecialchars($_POST['name'], ENT_QUOTES); ?>"/>
50
+ <?php if ($error['name']=='blank'): ?>
51
+ <p>名前を入力してください</p>
52
+ <?php endif; ?>
53
+ </dd>
54
+
55
+ <dt>メールアドレス<span class="required">必須</span></dt>
56
+ <dd><input type="text" name="email" size="35" maxlength="255" value="<?php echo htmlspecialchars($_POST['email'], ENT_QUOTES); ?>">
57
+ <?php if ($error['email']=='blank'): ?>
58
+ <p>メールアドレスを入力してください</p>
59
+ <?php endif; ?>
60
+ </dd>
61
+
62
+ <dt>パスワード<span class="required">必須</span></dt>
63
+ <dd><input type="text" name="password" size="10" maxlength="20" value="<?php echo htmlspecialchars($_POST['password'], ENT_QUOTES); ?>">
64
+ <?php if ($error['password']=='blank'): ?>
65
+ <p>パスワードを入力してください</p>
66
+ <?php endif; ?>
67
+ </dd>
68
+ </dl>
69
+ <input type="submit" value="入力内容を確認する">
70
+ </form>
71
+ ```
72
+ ↑index.php
73
+ ```php
74
+ <?php
75
+ session_start();
76
+ require('../dbconnect.php');
77
+
78
+ if (!isset($_SESSION['join'])) {
79
+ header('Location :index.php');
80
+ exit();
81
+ }
82
+
83
+ if (!empty($_POST)) {
84
+ $statement = $db->prepare('INSERT INTO members SET name=?, email=?, password=?, created=NOW()');
85
+ echo $ret = $statement->execute(array(
86
+ $_SESSION['join']['name'],
87
+ $_SESSION['join']['email'],
88
+ $_SESSION['join']['password']
89
+ ));
90
+ unset($_SESSION['join']);
91
+
92
+ header('Location: thanks.php');
93
+ exit();
94
+ }
95
+ ?>
96
+
97
+ <form action="" method="post">
98
+ <input type="hidden" name="action" value="submit"/>
99
+ <dl>
100
+ <dt>名前</dt>
58
101
  <dd>
102
+ <?php echo htmlspecialchars($_SESSION['join']['name'],ENT_QUOTES);?>
103
+ </dd>
104
+ <dt>メールアドレス</dt>
105
+ <dd>
106
+ <?php echo htmlspecialchars($_SESSION['join']['email'],ENT_QUOTES); ?>
107
+ </dd>
108
+ <dt>パスワード</dt>
109
+ <dd>
59
- <textarea name="message" rows="5" cols="80"></textarea>
110
+ <?php echo htmlspecialchars($_SESSION['join']['password'],ENT_QUOTES); ?>
60
111
  </dd>
61
112
  </dl>
62
113
  <div>
63
- <input type="submit" value="投稿する">
114
+ <a href="index.php?action=rewrite">書き直す</a>|<input type="submit" value="登録する">
64
115
  </div>
116
+ ```
65
- </form>
117
+ ↑check.php
66
118
 
119
+ check.phpの画面で登録ボタンを押しても、データベースへの接続エラーは出ませんでしたが、データ内容を登録できませんでした。
120
+ 解決策があればご教示お願いいたします。
121
+
122
+
123
+
124
+ **追記**
125
+ コメントを参考にして実行時でもエラー表示が出ないかを確認するため、以下のコードをdbconnect.phpに書きましたが、具体的な解決策は分かりませんでした。
126
+ ```php
127
+ <?php
128
+ try {
129
+ $pdo = new PDO(
130
+ 'mysql:dbname=mydb;host=localhost;charset=utf8',
131
+ 'root',
132
+ 'root',
133
+ [
134
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
135
+ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
136
+ ]
137
+ );
138
+ } catch (PDOException $e) {
139
+
140
+ header('Content-Type: text/plain; charset=UTF8', true, 500);
141
+ exit($e->getMessage());
142
+ }
143
+
144
+ header('Content-Type: text/html; charset=utf8');
145
+ ?>
67
146
  ```
68
147
 
69
-
70
- **確認したこと**
71
- テーブル名:membersのデータを受けれているかの確認をするため、DOCTYPE html以降の
72
- <?php echo htmlspecialchars($member['name'],ENT_QUOTES);?>
73
- でnameを受け取れているかの確認をしました。
74
- その結果、登録名である「サイトウ」が表示されていました。
75
148
 
76
149
  **開発環境**
77
150
  使っているPC : Mac

2

タイトルの不備を修正

2022/05/25 05:29

投稿

t_sssaito
t_sssaito

スコア0

test CHANGED
@@ -1 +1 @@
1
- データベースに投稿内容を登録
1
+ データベースに投稿内容を登録したい
test CHANGED
File without changes

1

タイトルの不備を修正

2022/05/25 05:28

投稿

t_sssaito
t_sssaito

スコア0

test CHANGED
@@ -1 +1 @@
1
- データベースに投稿内容を投稿したい
1
+ データベースに投稿内容を登録
test CHANGED
File without changes