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

質問編集履歴

2

いらない記述があったので修正しました。

2021/11/19 06:24

投稿

tamachin
tamachin

スコア2

title CHANGED
File without changes
body CHANGED
@@ -12,7 +12,6 @@
12
12
  ```ここに言語名を入力
13
13
  PHP
14
14
  ソースコード
15
- 案1
16
15
  function insert_item($link) {
17
16
  if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
18
17
  return;
@@ -73,43 +72,6 @@
73
72
 
74
73
  画像のディレクトリは取れていますが、肝心のアップロードが出来てないです。
75
74
 
76
- 案2
77
- if ($_FILES['new_img']['error'] === UPLOAD_ERR_OK) {
78
-
79
- if (count($err_msg) === 0) {
80
-
81
- $chk_picture = getimagesize($_FILES['new_img']['tmp_name']);
82
-
83
- if ($chk_picture['mime'] === 'image/png' || $chk_picture['mime'] === 'image/jpeg') {
84
-
85
- if ($chk_picture[0] <= 500 && ($chk_picture[1] <= 500)) {
86
-
87
- $mime = $chk_picture['mime'];
88
- switch ($mime) {
89
- case 'image/png':
90
- $type = '.png';
91
- break;
92
- case 'image/jpeg':
93
- $type = '.jpg';
94
- break;
95
- }
96
-
97
- $upload = $uploaddir . date('YmdHis') . rand(0, 10000) . $type;
98
-
99
- move_uploaded_file($_FILES['new_img']['tmp_name'], $upload);
100
- } else {
101
- $err_msg[] = 'ファイルは縦と横500px以内にしてください';
102
- }
103
- } else {
104
- $err_msg[] = 'PNGかJPEG形式のファイルをアップロードしてください';
105
- }
106
- }
107
- } else {
108
- $err_msg[] = 'ファイルを選択してください';
109
- }
110
-
111
- こちらは動きすら見せません。
112
-
113
75
  HTML
114
76
  <!DOCTYPE html>
115
77
  <?php require_once('../../htdocs/mvc/tool.php');?>

1

修正

2021/11/19 06:24

投稿

tamachin
tamachin

スコア2

title CHANGED
File without changes
body CHANGED
@@ -1,18 +1,13 @@
1
1
  ### 前提・実現したいこと
2
2
  PHPでデータベースに画像を保存してアップロードしたい。
3
- イメージ要素に画像のディレクトリを変数で入れる。
4
- 画像のディレクトリはデータベースで管理する。
5
- で達成される。
6
3
 
7
4
 
8
5
  ### 発生している問題・エラーメッセージ
9
6
 
10
7
  ```
11
8
  処理を作ってみたが、うまくいかない。
12
- やり方がわからない。
13
- 下記のようなエラーが出てしまう。
14
9
  ```
15
- ![イメージ説明](fa2faa89b5afe05e338bb36d112efd85.png)
10
+
16
11
  ### 該当のソースコード
17
12
  ```ここに言語名を入力
18
13
  PHP
@@ -40,10 +35,11 @@
40
35
 
41
36
  var_dump($_POST['new_price']);
42
37
 
43
- $img_path = '/file';
38
+ $img_path = '../file/';
44
39
 
45
40
  $image = file_get_contents( $img_path );
46
-
41
+ var_dump($img_path);
42
+ $upload = move_uploaded_file($_FILES['file']['tmp_name'], $image);
47
43
 
48
44
 
49
45
 
@@ -61,7 +57,7 @@
61
57
  var_dump($new_time);
62
58
 
63
59
 
64
- $sql = 'INSERT INTO item(name, price, img, status, created_date, updated_date) VALUES(\''.$new_name.'\',\''.$new_price.'\',\''.$image.',\'\''.$new_status.'\',\''.$new_time.'\',\''.$new_time.'\')';
60
+ $sql = 'INSERT INTO item(name, price, img, status, created_date, updated_date) VALUES(\''.$new_name.'\',\''.$new_price.'\',\''.$upload.',\'\''.$new_status.'\',\''.$new_time.'\',\''.$new_time.'\')';
65
61
  var_dump($sql);
66
62
  if ($result = mysqli_query($link, $sql) === TRUE) {
67
63
 
@@ -75,8 +71,7 @@
75
71
  }
76
72
  }
77
73
 
78
- Warning: file_get_contents(/file): failed to open stream: No such file or directory
79
- エラーが発生しました
74
+ 画像のディレクトリは取れていますが、肝心のアップロ出来てないです
80
75
 
81
76
  案2
82
77
  if ($_FILES['new_img']['error'] === UPLOAD_ERR_OK) {
@@ -115,10 +110,105 @@
115
110
 
116
111
  こちらは動きすら見せません。
117
112
 
113
+ HTML
114
+ <!DOCTYPE html>
115
+ <?php require_once('../../htdocs/mvc/tool.php');?>
116
+ <html lang="ja">
117
+
118
+ <head>
119
+ <meta charset="UTF-8">
120
+ <title>ECサイト</title>
121
+ </head>
122
+
123
+ <body>
124
+
125
+ <h1>ECサイト</h1>
126
+
127
+ <section>
128
+ <h2>新規商品追加</h2>
129
+
130
+ <form action="tool.php" method="post" enctype="multipart/form-data">
131
+ <label>名前: <input type="text" name="new_name" size="30" /></label><br>
132
+ <label>値段: <input type="text" name="new_price" size="30" /></label><br>
133
+ <label>個数: <input type="text" name="new_stock" size="30" /></label><br>
134
+ <input type="file" name="new_img" accept="image/jpeg, image/png, image/gif" /><br>
135
+ <img src="../../file/ダウンロード.png">
136
+ <select name="new_status"><br>
137
+ <option value="0">非公開</option>
138
+ <option value="1">公開</option>
139
+ <option value="2">入力チェック用</option>
140
+ </select><br>
141
+ <input type="hidden" name="sql_kind" value="insert">
142
+ <input type="submit" name="add" value="■□■□商品追加■□■□" />
143
+ </form>
144
+
145
+ </section>
146
+
147
+ <section>
148
+ <h2>商品情報変更</h2>
149
+ <table>
150
+ <caption>商品一覧</caption>
151
+ <tbody>
152
+ <tr>
153
+ <th>商品名</th>
154
+ <th>価格</th>
155
+ <th>在庫数</th>
156
+ <th>ステータス</th>
157
+ </tr>
158
+ <?php
159
+ if (empty($data) !== TRUE) {
160
+ foreach ((array)$data as $list) {
161
+ if ((int) $list['status'] === 0) { ?>
162
+ <tr class="status_0">
163
+ <?php } else { ?>
164
+ <tr>
165
+ <?php } ?>
166
+ <? php print htmlspecialchars($list,ENT_QUOTES,'UTF-8'); ?>
167
+ <td><img class="img" src="<?PHP print $list['img']; ?>"></td>
168
+ <td class="d_name"><?php print $list['name']; ?></td>
169
+ <td class="d_price"><?php print $list['price']; ?></td>
170
+ <td>
171
+ <form method="post">
172
+ <!--<input type="text" class="input_text_width text_align_right" name="stock" value="<?php print $list['stock']; ?>">個-->
173
+ <!--<br>-->
174
+ <input type="submit" name="renew" value="変更">
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" name="change" value="非公開 → 公開">
183
+ <input type="hidden" name="change_status" value="1">
184
+ <input type="hidden" name="sql_kind" value="change">
185
+ </form>
186
+ </td>
187
+ </tr>
188
+ <?php } else { ?>
189
+ <td class="d_status">
190
+ <form method="post">
191
+ <input type="submit" name="change" value="公開 → 非公開">
192
+ <input type="hidden" name="change_status" value="0">
193
+ <input type="hidden" name="sql_kind" value="change">
194
+ </form>
195
+ </td>
196
+ </tr>
197
+ <?php }
198
+ }
199
+ } ?>
200
+
201
+ </tbody>
202
+ </table>
203
+ </section>
204
+ </body>
205
+
206
+ </html>
118
207
  ```
119
208
 
120
209
  ### 試したこと
121
210
  https://ryou1214.hatenadiary.org/entry/20120309/1331306992
211
+ https://qiita.com/ryo-futebol/items/11dea44c6b68203228ff
122
212
  上記のサイトを参考にしました。
123
213
 
124
214