質問編集履歴

2

誤字

2020/10/13 09:10

投稿

suru
suru

スコア2

test CHANGED
@@ -1 +1 @@
1
- PHP 例外処理について
1
+ PHPについて php
test CHANGED
File without changes

1

誤字

2020/10/13 09:10

投稿

suru
suru

スコア2

test CHANGED
File without changes
test CHANGED
@@ -1,150 +1,10 @@
1
- PHPで練習ため掲示板を作成しています。
1
+ コードある、データという関数を作成しており、その中にある
2
2
 
3
- 下のコードにある、データベースから投稿データを取得するという関数(get_posts)を作成しており、その中にある
4
-
5
- mysqliに繋がらない時(if( true || $mysqli->connect_errno ))、例外処理を使い、エラーメッセージを表示するようにしたいのですが(error_messageという関数を作りました)、表示ができません。
3
+ mに繋がらない時例外処理を使い、表示するようにしたいのですが(表示ができません。
6
4
 
7
5
 
8
6
 
9
7
  ```ここに言語を入力
10
-
11
- <?php
12
-
13
- require dirname(__FILE__).'/vendor/autoload.php';
14
-
15
- $dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
16
-
17
- $dotenv->load();
18
-
19
-
20
-
21
- date_default_timezone_set('Asia/Tokyo');
22
-
23
-
24
-
25
- $now_date = null;
26
-
27
- $data = null;
28
-
29
- $message = array();
30
-
31
- $message_array = array();
32
-
33
- $error_message = array();
34
-
35
-
36
-
37
- // エラー処理
38
-
39
-
40
-
41
- function error_message($mysqli) {
42
-
43
- try {
44
-
45
- if ( $mysqli->connect_errno ) {
46
-
47
- throw new Exception();
48
-
49
- } } catch(Exception $e) {
50
-
51
- $error_message[] = '書き込みに失敗しました / エラー番号 '.$mysqli->connect_errno.' : '.$mysqli->connect_error;
52
-
53
- }
54
-
55
- }
56
-
57
-
58
-
59
- // データベースから投稿データを取得する
60
-
61
-
62
-
63
- function get_posts() {
64
-
65
- $mysqli = mysqli_connect( getenv('DB_HOST'), getenv('DB_USERNAME'), getenv('DB_PASSWORD'), getenv('DB_DATABASE') );
66
-
67
-
68
-
69
- if( true || $mysqli->connect_errno ) {
70
-
71
- $message_array = error_message($mysqli);
72
-
73
- } else {
74
-
75
- $sql = "SELECT viewname,message,postdate FROM message ORDER BY postdate DESC";
76
-
77
- $res = $mysqli->query($sql);
78
-
79
-
80
-
81
- if( $res ) {
82
-
83
- $message_array = $res->fetch_all(MYSQLI_ASSOC);
84
-
85
- }
86
-
87
-
88
-
89
- $mysqli->close();
90
-
91
- }
92
-
93
- return $message_array;
94
-
95
- }
96
-
97
-
98
-
99
- // 投稿データをデータベースに登録する
100
-
101
-
102
-
103
- function post_save($viewname, $message) {
104
-
105
- $mysqli = mysqli_connect( getenv('DB_HOST'), getenv('DB_USERNAME'), getenv('DB_PASSWORD'), getenv('DB_DATABASE') );
106
-
107
-
108
-
109
- if( $mysqli->connect_errno ) {
110
-
111
- $error_message[] = '書き込みに失敗しました / エラー番号 '.$mysqli->connect_errno.' : '.$mysqli->connect_error;
112
-
113
- } else {
114
-
115
- $mysqli->set_charset('utf8');
116
-
117
- $now_date = date("Y-m-d H:i:s");
118
-
119
-
120
-
121
- // データを登録するSQL作成
122
-
123
- $sql = "INSERT INTO message (viewname, message, postdate) VALUES ('$viewname', '$message', '$now_date')";
124
-
125
-
126
-
127
- // データを登録
128
-
129
- $res = $mysqli->query($sql);
130
-
131
-
132
-
133
- if ( $res ) {
134
-
135
- $_SESSION['success_message'] = 'メッセージを書き込みました';
136
-
137
- } else {
138
-
139
- $error_message[] = '書き込みに失敗しました';
140
-
141
- }
142
-
143
- $mysqli->close();
144
-
145
- }
146
-
147
- }
148
8
 
149
9
 
150
10
 
@@ -182,134 +42,4 @@
182
42
 
183
43
  header('Location: ./');
184
44
 
185
- }
186
-
187
- }
188
-
189
-
190
-
191
- $message_array = get_posts();
192
-
193
- ?>
194
-
195
-
196
-
197
- <!DOCTYPE html>
198
-
199
- <html lang="ja">
200
-
201
- <head>
202
-
203
- <meta charset="utf-8">
204
-
205
- <link rel="stylesheet" href="style.css">
206
-
207
- <title>練習用</title>
208
-
209
- </head>
210
-
211
-
212
-
213
- <body>
214
-
215
- <h1>掲示板</h1>
216
-
217
- <?php if( empty($_POST['btn_submit']) && !empty($_SESSION['success_message']) ): ?>
218
-
219
- <p class="success_message"><?php echo $_SESSION['success_message']; ?></p>
220
-
221
- <?php unset($_SESSION['success_message']); ?>
222
-
223
- <?php endif; ?>
224
-
225
-
226
-
227
- <?php if( !empty($error_message)): ?>
228
-
229
- <ul class="error_message">
230
-
231
- <?php foreach( $error_message as $value ): ?>
232
-
233
- <li><?php echo $value; ?></li>
234
-
235
- <?php endforeach; ?>
236
-
237
- </ul>
238
-
239
- <?php endif; ?>
240
-
241
-
242
-
243
- <form method="post">
244
-
245
- <div>
246
-
247
- <label for="viewname">表示名</label>
248
-
249
- <input id="viewname" type="text" name="viewname" value="">
250
-
251
- </div>
252
-
253
-
254
-
255
- <div>
256
-
257
- <label for="message">投稿フォーム</label>
258
-
259
- <textarea id="message" name="message"></textarea>
260
-
261
- </div>
262
-
263
-
264
-
265
- <input type="submit" name="btn_submit" value="投稿する">
266
-
267
- </form>
268
-
269
- <hr>
270
-
271
-
272
-
273
- <section>
274
-
275
- <?php if( !empty($message_array)): ?>
276
-
277
- <?php foreach( $message_array as $value ): ?>
278
-
279
- <article>
280
-
281
- <div class="info">
282
-
283
- <h2><?php echo $value['viewname']; ?></h2>
284
-
285
- <time><?php echo date('Y年m月d日 H:i', strtotime($value['postdate'])); ?></time>
286
-
287
- </div>
288
-
289
-
290
-
291
- <p><?php echo $value['message']; ?></p>
292
-
293
- </article>
294
-
295
-
296
-
297
- <?php endforeach; ?>
298
-
299
- <?php endif; ?>
300
-
301
- </section>
302
-
303
-
304
-
305
- </body>
306
-
307
- </html>
308
-
309
45
  ```
310
-
311
-
312
-
313
- 初学書で申し訳ございませんが、どのようにコードを改善すればいいのかご教授いただきたいです。
314
-
315
- よろしくお願いいたします。