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

質問編集履歴

2

誤字

2020/10/13 09:10

投稿

suru
suru

スコア2

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

1

誤字

2020/10/13 09:10

投稿

suru
suru

スコア2

title CHANGED
File without changes
body CHANGED
@@ -1,78 +1,8 @@
1
- PHPで練習のために掲示板を作成しています。
2
- 下のコードにある、データベースから投稿データを取得するという関数(get_posts)を作成しており、その中にある
1
+ 下のコードにある、データという関数を作成しており、その中にある
3
- mysqliに繋がらない時(if( true || $mysqli->connect_errno ))、例外処理を使い、エラーメッセージを表示するようにしたいのですが(error_messageという関数を作りました)、表示ができません。
2
+ mに繋がらない時例外処理を使い、表示するようにしたいのですが(表示ができません。
4
3
 
5
4
  ```ここに言語を入力
6
- <?php
7
- require dirname(__FILE__).'/vendor/autoload.php';
8
- $dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
9
- $dotenv->load();
10
5
 
11
- date_default_timezone_set('Asia/Tokyo');
12
-
13
- $now_date = null;
14
- $data = null;
15
- $message = array();
16
- $message_array = array();
17
- $error_message = array();
18
-
19
- // エラー処理
20
-
21
- function error_message($mysqli) {
22
- try {
23
- if ( $mysqli->connect_errno ) {
24
- throw new Exception();
25
- } } catch(Exception $e) {
26
- $error_message[] = '書き込みに失敗しました / エラー番号 '.$mysqli->connect_errno.' : '.$mysqli->connect_error;
27
- }
28
- }
29
-
30
- // データベースから投稿データを取得する
31
-
32
- function get_posts() {
33
- $mysqli = mysqli_connect( getenv('DB_HOST'), getenv('DB_USERNAME'), getenv('DB_PASSWORD'), getenv('DB_DATABASE') );
34
-
35
- if( true || $mysqli->connect_errno ) {
36
- $message_array = error_message($mysqli);
37
- } else {
38
- $sql = "SELECT viewname,message,postdate FROM message ORDER BY postdate DESC";
39
- $res = $mysqli->query($sql);
40
-
41
- if( $res ) {
42
- $message_array = $res->fetch_all(MYSQLI_ASSOC);
43
- }
44
-
45
- $mysqli->close();
46
- }
47
- return $message_array;
48
- }
49
-
50
- // 投稿データをデータベースに登録する
51
-
52
- function post_save($viewname, $message) {
53
- $mysqli = mysqli_connect( getenv('DB_HOST'), getenv('DB_USERNAME'), getenv('DB_PASSWORD'), getenv('DB_DATABASE') );
54
-
55
- if( $mysqli->connect_errno ) {
56
- $error_message[] = '書き込みに失敗しました / エラー番号 '.$mysqli->connect_errno.' : '.$mysqli->connect_error;
57
- } else {
58
- $mysqli->set_charset('utf8');
59
- $now_date = date("Y-m-d H:i:s");
60
-
61
- // データを登録するSQL作成
62
- $sql = "INSERT INTO message (viewname, message, postdate) VALUES ('$viewname', '$message', '$now_date')";
63
-
64
- // データを登録
65
- $res = $mysqli->query($sql);
66
-
67
- if ( $res ) {
68
- $_SESSION['success_message'] = 'メッセージを書き込みました';
69
- } else {
70
- $error_message[] = '書き込みに失敗しました';
71
- }
72
- $mysqli->close();
73
- }
74
- }
75
-
76
6
  if( !empty($_POST['btn_submit'])) {
77
7
 
78
8
  if ( empty($_POST['viewname'])) {
@@ -90,69 +20,4 @@
90
20
  if( empty($error_message) ) {
91
21
  post_save($viewname, $message);
92
22
  header('Location: ./');
93
- }
94
- }
95
-
96
- $message_array = get_posts();
97
- ?>
98
-
99
- <!DOCTYPE html>
100
- <html lang="ja">
101
- <head>
102
- <meta charset="utf-8">
103
- <link rel="stylesheet" href="style.css">
104
- <title>練習用</title>
105
- </head>
106
-
107
- <body>
108
- <h1>掲示板</h1>
109
- <?php if( empty($_POST['btn_submit']) && !empty($_SESSION['success_message']) ): ?>
110
- <p class="success_message"><?php echo $_SESSION['success_message']; ?></p>
111
- <?php unset($_SESSION['success_message']); ?>
112
- <?php endif; ?>
113
-
114
- <?php if( !empty($error_message)): ?>
115
- <ul class="error_message">
116
- <?php foreach( $error_message as $value ): ?>
117
- <li><?php echo $value; ?></li>
118
- <?php endforeach; ?>
119
- </ul>
120
- <?php endif; ?>
121
-
122
- <form method="post">
123
- <div>
124
- <label for="viewname">表示名</label>
125
- <input id="viewname" type="text" name="viewname" value="">
126
- </div>
127
-
128
- <div>
129
- <label for="message">投稿フォーム</label>
130
- <textarea id="message" name="message"></textarea>
131
- </div>
132
-
133
- <input type="submit" name="btn_submit" value="投稿する">
134
- </form>
135
- <hr>
136
-
137
- <section>
138
- <?php if( !empty($message_array)): ?>
139
- <?php foreach( $message_array as $value ): ?>
140
- <article>
141
- <div class="info">
142
- <h2><?php echo $value['viewname']; ?></h2>
143
- <time><?php echo date('Y年m月d日 H:i', strtotime($value['postdate'])); ?></time>
144
- </div>
145
-
146
- <p><?php echo $value['message']; ?></p>
147
- </article>
148
-
149
- <?php endforeach; ?>
150
- <?php endif; ?>
151
- </section>
152
-
153
- </body>
154
- </html>
155
- ```
23
+ ```
156
-
157
- 初学書で申し訳ございませんが、どのようにコードを改善すればいいのかご教授いただきたいです。
158
- よろしくお願いいたします。