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

質問編集履歴

2

文章の内容変更

2021/07/28 04:57

投稿

ananans
ananans

スコア2

title CHANGED
File without changes
body CHANGED
@@ -4,54 +4,130 @@
4
4
  #**発生している問題・エラーメッセージ**
5
5
  Notice: Undefined variableというエラーが発生しました。
6
6
  商品登録ボタンを押しても登録されません。
7
- 定義自体はおかくないと思ってます。
7
+ 定義自体はしてると思っております。
8
+ ![イメージ説明](d01f427e9fe90ad750126373ecd1e278.png)
9
+ ![イメージ説明](563eddb1a55e760d4a4169613a5cb977.png)
8
10
 
9
- ![イメージ説明](983f00fa4959ddf31e125db603e04cb6.png)
10
- ![イメージ説明](685616b73e5a78458829e81708ea6528.png)
11
11
  ```php
12
12
  ソースコード
13
13
  functions.php
14
14
  <?php
15
- require_once('../../include/conf/const.php');
16
- require_once('../../htdocs/mvc/tool.php');
17
- require_once('../../htdocs/mvc/index.php');
18
- require_once('../../htdocs/mvc/result.php');
19
-
20
- $uploaddir = './drink_picture/';
21
15
  $err_msg = [];
22
- $complete_msg = [];
23
16
 
24
- function get_db_connect() {
25
-
26
- if (!$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWD, DB_NAME)) {
27
- die('error: ' . mysqli_connect_error());
28
- }
29
-
30
- mysqli_set_charset($link, DB_CHARACTER_SET);
31
-
32
- return $link;
33
- }
34
-
35
- function close_db_connect($link) {
17
+ function insert_drink($link) {
36
18
 
19
+ if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_POST['sql_kind'] === 'insert') {
20
+
21
+ if (isset($_POST['new_name']) === TRUE) {
22
+
37
- mysqli_close($link);
23
+ switch (TRUE) {
24
+ case ($_POST['new_name'] === ''):
25
+ $err_msg[] = '商品名を入力してください';
26
+ break;
27
+ case ($_POST['new_name'] === NULL);
28
+ $err_msg[] = '商品名を入力してください';
29
+ break;
30
+ default:
31
+ $new_name = $_POST['new_name'];
32
+ break;
38
- }
33
+ }
34
+ }
39
35
 
36
+ if (isset($_POST['new_price']) === TRUE) {
37
+
38
+ switch (TRUE) {
39
+ case ($_POST['new_price'] === ''):
40
+ $err_msg[] = '値段を入力してください';
41
+ break;
42
+ case ($_POST['new_price'] === NULL):
43
+ $err_msg[] = '値段を入力してください';
44
+ break;
45
+ case (preg_match('/^[0-9]+$/', $_POST['new_price']) !== 1):
46
+ $err_msg[] = '値段は0以上の半角整数を入力してください';
47
+ break;
48
+ default:
49
+ $new_price = $_POST['new_price'];
50
+ break;
51
+ }
52
+ }
53
+
54
+ if (isset($_POST['new_stock']) === TRUE) {
55
+
56
+ switch (TRUE) {
57
+ case ($_POST['new_stock'] === ''):
58
+ $err_msg[] = '個数を入力してください';
59
+ break;
60
+ case ($_POST['new_stock'] === NULL):
61
+ $err_msg[] = '個数を入力してください';
62
+ break;
63
+ case (preg_match('/^[0-9]+$/', $_POST['new_stock']) !== 1):
64
+ $err_msg[] = '在庫は0以上の半角整数を入力してください';
65
+ break;
66
+ default:
67
+ $new_stock = $_POST['new_stock'];
68
+ break;
69
+ }
70
+ }
71
+
72
+ if ($_FILES['new_img']['error'] === UPLOAD_ERR_OK) {
73
+
40
- function insert_drink($link) {
74
+ if (count($err_msg) === 0) {
75
+
76
+ $chk_picture = getimagesize($_FILES['new_img']['tmp_name']);
77
+
78
+ if ($chk_picture['mime'] === 'image/png' || $chk_picture['mime'] === 'image/jpeg') {
79
+
80
+ if ($chk_picture[0] <= 500 && ($chk_picture[1] <= 500)) {
81
+
82
+ $mime = $chk_picture['mime'];
83
+ switch ($mime) {
84
+ case 'image/png':
85
+ $type = '.png';
86
+ break;
87
+ case 'image/jpeg':
88
+ $type = '.jpg';
89
+ break;
90
+ }
91
+
92
+ $upload = $uploaddir . date('YmdHis') . rand(0, 10000) . $type;
93
+
94
+ move_uploaded_file($_FILES['new_img']['tmp_name'], $upload);
95
+ } else {
96
+ $err_msg[] = 'ファイルは縦と横500px以内にしてください';
97
+ }
98
+ } else {
99
+ $err_msg[] = 'PNGかJPEG形式のファイルをアップロードしてください';
100
+ }
101
+ }
102
+ } else {
103
+ $err_msg[] = 'ファイルを選択してください';
104
+ }
105
+
106
+
107
+ if (isset($_POST['new_status']) === TRUE) {
108
+ if ((int) $_POST['new_status'] === 0 || (int) $_POST['new_status'] === 1) {
109
+ $new_status = (int) $_POST['new_status'];
110
+ } else {
111
+ $err_msg[] = 'ステータスは公開か非公開を選択してください';
112
+ }
113
+ } else {
114
+ $err_msg[] = 'ステータスを選択してください';
115
+ }
116
+
117
+ if (count($err_msg) === 0) {
118
+
41
119
  $new_time = date('Y-m-d H:i:s');
42
120
 
43
121
  $insert_data_info = [
44
- 'drink_id' => $drink_id,
45
122
  'drink_name' => $new_name,
46
123
  'price' => $new_price,
47
124
  'created_at' => $new_time,
48
125
  'updated_at' => $new_time,
49
126
  'status' => $new_status,
50
- 'path' => $paths,
127
+ 'path' => $upload
51
128
  ];
52
- print_r($insert_data_info);
53
129
 
54
- $sql = 'INSERT INTO drink_info_table(drink_name, price, created_at, updated_at, status) VALUES(\''.$drink_id.'\',\''.$new_name.'\',\''.$new_price.'\',\''.$new_time.'\',\''.$new_time.'\',\''.$new_status.'\',\''.$paths.'\')';
130
+ $sql = 'INSERT INTO drink_info_table(drink_name, price, created_at, updated_at, status, path)VALUES(\''.$new_name.'\',\''.$new_price.'\',\''.$new_time.'\',\''.$new_time.'\',\''.$new_status.'\'\''.$upload.'\')';
55
131
 
56
132
  if ($result = mysqli_query($link, $sql) === TRUE) {
57
133
 
@@ -64,7 +140,7 @@
64
140
  'updated_at' => $new_time
65
141
  ];
66
142
 
67
- $sql = 'INSERT INTO stock_table(drink_id, stock, created_at, updated_at) VALUES(\''.$drink_id.'\',\''.$new_stock.'\',\''.$new_time.'\',\''.$new_time.'\')';
143
+ $sql = 'INSERT INTO stock_table(drink_id, stock, created_at, updated_at)VALUES(\''.$drink_id.'\',\''.$new_stock.'\',\''.$new_time.'\',\''.$new_time.'\')';
68
144
 
69
145
  if ($result = mysqli_query($link, $sql) !== TRUE) {
70
146
  $err_msg[] = 'stock_tableへのデータの登録に失敗しました';
@@ -72,145 +148,19 @@
72
148
  } else {
73
149
  $err_msg[] = 'drink_info_tableへのデータの登録に失敗しました';
74
150
  }
151
+ if (count($err_msg) === 0) {
75
152
  $complete_msg[] = '追加登録完了!';
76
153
  }
154
+ }
155
+ }
77
156
 
78
- ```
157
+ }
79
- ```
80
- tool.php
81
- <?php
82
- require_once('../../include/model/functions.php');
83
- require_once('../../include/conf/const.php');
84
- require_once('../../include/view/tool2.php');
85
158
 
86
- $data = [ 'drink_id' => '',
87
- 'drink_name' => '',
88
- 'price' => '',
89
- 'created_at' => '',
90
- 'updated_at' => '',
91
- 'status' => '',
92
- 'path' => ''
93
- ];
94
- $link = get_db_connect();
95
159
 
96
- $data = insert_drink($link);
97
-
98
- close_db_connect($link);
99
160
  ```
100
- ```
101
- tool2.php
102
- <!DOCTYPE html>
103
- <html lang="ja">
104
161
 
105
- <head>
106
- <meta charset="UTF-8">
107
- <title>自動販売機商品管理</title>
108
- </head>
109
-
110
- <body>
111
-
112
- <?php if (count($complete_msg) !== 0) {
113
- foreach ($complete_msg as $complete) { ?>
114
- <p><?php print $complete; ?></p>
115
- <?php }
116
- } ?>
117
-
118
- <?php if (count($err_msg) !== 0) {
119
- foreach ($err_msg as $err) { ?>
120
- <p><?php print $err; ?></p>
121
- <?php }
122
- } ?>
123
-
124
- <h1>自動販売機管理ツール</h1>
125
-
126
- <section>
127
- <h2>新規商品追加</h2>
128
-
129
- <form action="tool.php" method="post" enctype="multipart/form-data">
130
- <label>名前: <input type="text" name="new_name" size="30" /></label><br>
131
- <label>値段: <input type="text" name="new_price" size="30" /></label><br>
132
- <label>個数: <input type="text" name="new_stock" size="30" /></label><br>
133
- <input type="file" name="new_img" accept="image/jpeg, image/png, image/gif" /><br>
134
- <select name="new_status"><br>
135
- <option value="0">非公開</option>
136
- <option value="1">公開</option>
137
- <option value="2">入力チェック用</option>
138
- </select><br>
139
- <input type="hidden" name="sql_kind" value="insert">
140
- <input type="submit" value="■□■□商品追加■□■□" />
141
- </form>
142
-
143
- </section>
144
-
145
- <section>
146
- <h2>商品情報変更</h2>
147
- <table>
148
- <caption>商品一覧</caption>
149
- <tbody>
150
- <tr>
151
- <th>商品画像</th>
152
- <th>商品名</th>
153
- <th>価格</th>
154
- <th>在庫数</th>
155
- <th>ステータス</th>
156
- </tr>
157
-
158
- <?php if (empty($data) !== TRUE) {
159
- foreach ($data as $list) {
160
- if ((int) $list['status'] === 0) { ?>
161
- <tr class="status_0">
162
- <?php } else { ?>
163
- <tr>
164
- <?php } ?>
165
- <td><img class="image" src="<?PHP print $list['path']; ?>"></td>
166
- <? php print $list; ?>
167
- <td class="d_name"><?php print html_enc($list['drink_name']); ?></td>
168
- <td class="d_price"><?php print $list['price']; ?></td>
169
- <td>
170
- <form method="post">
171
- <input type="text" class="input_text_width text_align_right" name="update_stock" value="<?php print $list['stock']; ?>">個
172
- <br>
173
- <input type="submit" value="変更">
174
- <input type="hidden" name="drink_id" value="<?php print $list['drink_id']; ?>">
175
- <input type="hidden" name="sql_kind" value="update">
176
- </form>
177
- </td>
178
-
179
- <?php if ((int) $list['status'] === 0) { ?>
180
- <td class="d_status">
181
- <form method="post">
182
- <input type="submit" value="非公開 → 公開">
183
- <input type="hidden" name="change_status" value="1">
184
- <input type="hidden" name="drink_id" value="<?php print $list['drink_id']; ?>">
185
- <input type="hidden" name="sql_kind" value="change">
186
- </form>
187
- </td>
188
- </tr>
189
- <?php } else { ?>
190
- <td class="d_status">
191
- <form method="post">
192
- <input type="submit" value="公開 → 非公開">
193
- <input type="hidden" name="change_status" value="0">
194
- <input type="hidden" name="drink_id" value="<?php print $list['drink_id']; ?>">
195
- <input type="hidden" name="sql_kind" value="change">
196
- </form>
197
- </td>
198
- </tr>
199
- <?php }
200
- }
201
- } ?>
202
-
203
- </tbody>
204
- </table>
205
- </section>
206
- </body>
207
-
208
- </html>
209
-
210
- ```
211
-
212
162
  #試したこと
213
- 定義のやりかたを変えたり、記述の順番を変えたりしましたが、ダメでした。
163
+ 変数の定義のやりを変えたりしましたが、エラーは直らなかっです
214
164
 
215
165
  #補足情報(FW/ツールのバージョンなど)
216
166
  Cloud9

1

画像追加

2021/07/28 04:56

投稿

ananans
ananans

スコア2

title CHANGED
File without changes
body CHANGED
@@ -6,6 +6,8 @@
6
6
  商品登録ボタンを押しても登録されません。
7
7
  定義自体はおかしくないと思ってます。
8
8
 
9
+ ![イメージ説明](983f00fa4959ddf31e125db603e04cb6.png)
10
+ ![イメージ説明](685616b73e5a78458829e81708ea6528.png)
9
11
  ```php
10
12
  ソースコード
11
13
  functions.php